perm filename E.ALS[UP,DOC]52 blob
sn#302326 filedate 1977-08-27 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00032 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00005 00002 Recent NEWS about E, newest news first.
C00014 00003 INDEX of commands.
C00032 00004 Abbreviations and explanation of E documentation. Credits.
C00036 00005 General remarks.
C00044 00006 PAGE CHANGING, APPENDING, DIVIDING and COMBINING: XAPPEND β<ff> XMARK XDELETE
C00053 00007 WINDOW and ARROW moving commands.
C00063 00008 LINE MARKING commands.
C00066 00009 LINE-EDIT commands.
C00082 00010 Attach and Copy commands: A C
C00091 00011 LINE-INSERT mode.
C00095 00012 Handling very long lines. XBREAK XJOIN
C00099 00013 SEARCH (or FIND) commands: F XFIND * XEXACT F<string>P F<string>:
C00115 00014 SUBSTITUTION commands: \
C00127 00015 FILE-SWITCHING and text transfering commands: ε λ H αβH ∃ ? αβ?
C00138 00016 Justification: XJFILL XJUST XJGET XSJFILL XSJUST
C00162 00017 MARGIN CONTROL commands: XALIGN XINDENT → ← XCENTER
C00171 00018 Commands for tabular material: XTABLE XTJFILL XTJUST XTJGET
C00187 00019 Other EXTENDED commands: X<cmd>
C00212 00020 System commands to evoke E and SWITCHES permitted after filenames.
C00223 00021 Using E from a TTY (non-display).
C00232 00022 PARENTHESIS finding/matching commands: ( ) XLPAREN XRPAREN ↔ XPAREN XPINFO
C00248 00023 Swapping To and From E via RPG startups: XRSYS XRUN XGORPG XDRD XTV
C00254 00024 Message and paragraph handling commands: ∂<cmd> 0∂ !<cmd> 0!
C00266 00025 MACROS: XDEFINE Z Y XRESUME XABORT # XSTOPALL XSTOPONE XSTOPZERO XSTOPHOW
C00288 00026 MACROS AND COMMAND FILES: XEXECUTE PUTDEFS XCOMMENT XATTACH XREDEFINE
C00294 00027 BOOK MODE (/B) and the READ command
C00301 00028 E files extended by other programs.
C00305 00029 NEW EXTENDED COMMANDS PROVIDED MAINLY FOR TELETYPE USERS
C00307 00030 Filenames and filehacks
C00311 00031 Generating a new directory line: XNDFAIL XNDSAIL
C00316 00032 Major changes have been made to the JUST and JFILL commands.
C00324 ENDMK
C⊗;
Recent NEWS about E, newest news first.
Index of E commands is on p. 3.
A history of E changes is in E.UPD[UP,DOC].
∂8/23/77 -- Bug in /R/F mode fixed.
∂8/20/77 -- New ⊗O command is just like ⊗XBACKGO<cr>--goes back to Old page.
Also:
⊗XBACKGO command fixed to remember place to return to over ⊗XAPPEND command.
Rare bug in file macros fixed (used to cause ill mem refs).
∂8/19/77 -- Improvements for non-display users; slight changes to old commands.
1. To allow substitution commands to be given from non-displays, E now
accepts a LINEFEED AT THE END OF A SEARCH STRING to indicate that a
SUBSTITUTION STRING IS COMING next. Thus, the following commands are
equivalent (although the first is difficult or impossible to type on a
non-display):
αFsearch stringα\substitute string<cr>
αFsearch string<lf>substitute string<cr>
Similarly, the following multipage substitute commands are equivalent:
αXFIND search stringα\substitute string<cr>
αXFIND search string<lf>substitute string<cr>
2. A non-display user can now execute commands that require use of
particular combinations of the "bucky" bits CONTROL and META. Two new
extended commands are used to specify what bucky bits are to be assumed
with the next command character.
⊗XCONTROL<cr> causes the next character to have only
the bucky bit CONTROL.
⊗XMETACONTROL<cr> causes the next character to have both
bucky bits META and CONTROL.
If neither of these commands is used on a non-display, a command that
makes a distinction between CONTROL and META-CONTROL will execute the
CONTROL version; and a command that distinguishes between any bucky bits
and none at all will execute the no-bucky-bit version.
Here is an example of using the ⊗XMETACONTROL command to do a delimited
search (and a substitution); the command
XMETA<cr>Fthis<lf>that<cr>
will find a delimited "this" and substitute "that".
3. To facilitate unambiguous abbreviation of the new ⊗XCONTROL command,
the old ⊗XCONTINUE command for resuming macro expansion has been renamed
to ⊗XRESUME.
4. Two new responses are now acceptable replies to the various Yes-or-No
questions about formatting that E asks when you try to edit a file that
doesn't have a directory. You can say /R to have E edit the file in
Readonly mode, or you can say /N to have E edit the file in No-directory
mode. NEITHER OF THESE TAKES A CARRIAGE-RETURN. These new responses save
you the trouble of waiting for the appropriate question to come up. They
are also useful if you accidentally answer the appropriate question with
a No.
5. ESC I will now interrupt any multiple substitution (even a one-page
type) after the next substitution.
∂8/14/77 -- Minor fixes.
Fix to make sure trailer values get updated when switching files.
Doesn't say "Are you sure that ... will approve" if not overwriting old file.
Slight fix to DM display routine to force redrawing line below line editor.
Fix to avoid spurious retyping of last line on non-displays.
∂8/3/77 -- Couple of rare bugs fixed.
Fix to ⊗XAPPEND to disallow editing of pagemark from newly appended page.
Fix to ⊗Q command to do nothing if previous line is a pagemark.
∂7/27/77 -- Extended searches in unformatted files are much improved.
Formerly, it was possible for an extended search in an unformatted file
to fail to find an existing occurrence of the search string, or worse,
for an ill mem ref to happen when it did find it. Both of these bugs
have been fixed. However, note that extended searches in unformatted
files still cannot go beyond the last page that you have looked at.
The directory is used for finding where each page starts in an extended
search, and the directory will only be complete out to the last page
that you have actually gone to. Thus, to make sure extended searches
can go all the way to the end of the file, you should first move to the
last page of the file (allowing E to generate the complete directory)
with a command like ⊗∞⊗P. This does not apply to any file that already
has a valid directory, nor to any file being edited /N.
Also, a couple of other bugs fixed:
Fix to prevent infinite loop when doing ⊗-⊗P from directory page in
unformatted file.
Minor fix to filehack parser.
∂7/14/77 -- One new command, a slight mod to the ⊗! command, and a fix to ⊗XBREAK.
⊗XWRITTEN command added to find out when the current file was previously
written and who did it (PPN and jobname).
The ⊗! command now never deletes a pagemark (the ⊗∂ command still does).
The ⊗XBREAK command now breaks properly lines in which a tab reaches
exactly to the break limit.
∂ *** A HISTORY OF OLDER E CHANGES IS CONTAINED IN: E.UPD[UP,DOC] ***
All information in E.UPD has been merged into this manual.
INDEX of commands.
Read α as CONTROL, β as META, ⊗ as EITHER CONTROL OR BOTH CONTROL AND META.
Modes: N=Normal, E=line-Edit, A=Attach
I=command explicitly affects line-Insert mode
L=command is a Line editor command,
S=command takes arg from Search distance.
# stands for any decimal number.
Page Modes Command Meaning
7 N,A <form> Go to next windowful but not beyond incore text
7 N,A ⊗<form> Go to next windowful (always)
6 N β<form> Insert an in-core pagemark
9 E,L α<form> Move cursor to beginning of line
7 N,A <vt> Go back a windowful but not beyond incore text
7 N,A ⊗<vt> Go back a windowful (always)
7 N,A <cr> Move arrow to next line
9 E first close line (if in LINE-EDIT)
9 E α<cr> Leave LINE-EDIT mode, stay on same line
11 I leave LINE-INSERT mode, stay on same line
13 N cursor to found location (after find)
9 N β<cr> Insert <cr>
9 E first close line (if in LINE-EDIT)
11 N,E,I αβ<cr> Enter LINE-INSERT mode
7 N,A <bs> Move arrow up a line
9 E,L move cursor left a char, erasing if at end of line
7,9 N,A,E,L α<bs> Same as <bs> but never erase
7 N,A β<bs> Move arrow up a line
9 E,L erase char to left
7 N,A αβ<bs> Move arrow up a line always
9 E first close line (if in LINE-EDIT)
Page Modes Command Meaning
N,A <alt> Abort command
9 E restore line to original condition
11 I leave LINE-INSERT mode, delete line if empty
13 <ESC>I Terminate multi-page FIND
14 terminate multiple substitution
25 terminate macro expansion
6 terminate wait on delayed V command
10 N,A,E,S ⊗A Attach 1 line
10 N,A,E,S ⊗#⊗A Attach # lines
10 N,A,E ⊗+⊗A Attach 1 more line
10 A ⊗-⊗A Attach 1 less line
10 N,E ⊗-⊗A Attach line just above current line
7 N,A,E ⊗B Glitch screen up from Bottom
10 N,A,E,S ⊗#⊗C Copy # lines into attach buffer
9 E,L αD Delete char (if at end of line, delete CRLF)
7 N,S αβD Delete line
7 N ⊗E Exit
10 A ⊗E Leave ATTACH mode by putting down all attached lines
13 N,A,E αF Find string (delimiters not required)
13 N,A,E αβF Find delimited string
⊗G Unused
15 N,A ⊗H Go to Home file
9 N,E,L αI Enter Insert mode (at end of line, enter line-insert mode)
9 N,E,I αβI Enter line-Insert mode
7 N,A,E ⊗J Jump arrow line to top of scr
Page Modes Command Meaning
7 N ⊗-⊗J Jump arrow line to bot of scr
7 N ⊗#⊗J Jump arrow line up # lines
7 N ⊗-⊗#⊗J Jump arrow line down # lines
9 N,E,L αK Kill characters forward up to next char typed
10 A αβK Kill attached lines
7 N,A αL Go to first line of current page
7 N,A αβL Go to first line of incore text
7 N,A ⊗#αL Go to Line # of current page
7 N,A ⊗#αβL Go to Line # of all incore text
8 N,A αM Go to next Mark
8 N,A αβM Place a Mark on current line
8 N,A ⊗-αβM Clear Mark on current line
8 N,A ⊗0αβM Clear all Marks
⊗N Unused
19 N,A ⊗O Go back to page that you last came from
6 N,A αP Go to next Page
6 N,A αβP Go to next Page that is not in core
6 N,A ⊗-αP Go to previous Page
6 N,A ⊗-αβP Go to previous Page that is not in core
6 N,A ⊗#αP Go to Page #
6 N,A ⊗#αβP Go to Page #, retaining only it in core
9 N,E ⊗Q Copy line above, and enter copy in line-edit mode
9 N,E,L αR Repeat line editor αS or αK or αB or αL cmd
10 A αβR Replace attached lines
9 N,E,L αS Skip to next char typed
Page Modes Command Meaning
7 N,A,E ⊗T Glitch screen down from Top
7 N,A,E ⊗U Move arrow Up a line
6 N,A,E αV Redraw screen (without clearing)
6 N,A,E αβV Clear and then redraw screen
7 N,A,E ⊗W Move to next Window but not beyond incore text
19 N,A,E ⊗X Enter eXtended command next
25 N,A,E ⊗Y Call current macro
25 N,A,E ⊗Z Call a named macro
25 N,A,E ⊗# (Actually the "#" char) Pass macro call arg to next cmd
24 N,A,E ⊗∂ Operate on message with next cmd
24 N,A,E ⊗! Operate on paragraph with next cmd
15 N,A ⊗ε Switch to given file in READWRITE mode
15 N,A ⊗λ Switch to given file in READONLY mode
Page Modes Command Meaning
15 N,A,E ⊗∃ Show names of files in fileswitch list
15 N,A,E ⊗0⊗∃ Zero fileswitch list
13 N,A,E ⊗* Repeat last ⊗F or ⊗XFIND command
13 N,E ⊗\ Repeat last substitution command
7 N,A ⊗. Write out current page (not including attach buffer)
15 N,A ⊗? Switch to the file E.ALS[UP,DOC]/R
7 N,E ⊗; Move cursor straight up
7 N,E ⊗: Move cursor straight down
22 N,E ⊗( Find (
22 N,E ⊗) Find matching )
21 N,E ⊗↔ Return to place ⊗(, ⊗) or ⊗↔ was given
7 N,E ⊗↑ Move cursor to end of line above
7 N,E ⊗↓ Move cursor to end of line below
17 N,A,S ⊗← Shift line or attach buffer left by current indent default
17 N,A,S ⊗→ Shift line or attach buffer right by current indent default
7 N,A,E ⊗> Move arrow down 4 lines
7 N,A,E ⊗< Move arrow up 4 lines
7 N,A,E ⊗≥ Move arrow down half a screen
7 N,A,E ⊗≤ Move arrow up half a screen
7 N,A,E ⊗∧ Move arrow to top of screen
7 N,A,E ⊗∨ Move arrow to bottom of screen
Page Modes ⊗X Command Meaning
26 N,A,E ABORT Abort one or more macros levels of in progress
19 N,A ALIAS Change your job's ALIAS
17 N,A,S ALIGN Align left margins of text
6 N APPEND Add next page to incore page(s)
26 N ATTACH Place an editable macro definition in the attach buffer
19 N,A,E AUTOBURP Set or read autoburping threshold
19 N,A BACKGO Go back to page that you last came from
19 N,A BEEPME Beep the user's terminal now
12 N,A,S BREAK Break line(s) at given column position
19 N,A BURP Burp current page of extraneous null records
19 N,A,E CANCEL Flush unwritten changes to incore page(s)
17 N,A,S CENTER Center text of given lines between margins
19 N,A CLOSE Close the file, but allow further editing
26 N,A,E COMMENT No-op, useful for putting comments in command files.
19 N,A,E CONTROL Make next cmd char have only the CONTROL bit
19 N,A,E DDTGO Call RAID, if available (ERAID only)
25 N,A DEFINE Define a macro
19 N DELETE Delete the next (not-in-core) pagemark
23 N DIRED Swap to the DIRED directory editor
19 N,A DPYALWAYS Update the display after every command
19 N,A DPYSKIP Only update the display when no typeahead
19 N,A,E DRAW Update the display now
23 N DRD Swap to the DIRED directory editor
19 N,A,E EMPTY Move to next empty line on page
29 N,A ENTER Switch to given file in READWRITE mode
29 N,A EPSILON Switch to given file in READWRITE mode
13 N,A EXACT Distinguish case of letters in searches
26 N,A,E EXECUTE Read and execute commands from a file
29 N,A,E EXIST Type out fileswitch list
Page Modes ⊗X Command Meaning
13 N,A,E FIND Do a multipage search for a given string
23 N GORPG Swap to SNAIL (RPG) to reexecute last cmd
19 N,A HEIGHT Set the number of lines of display used by E
17 N,A,S INDENT Indent lines by given amount
19 N INSERT Insert an incore pagemark before current line
16 N,A,S JFILL Justify paragraphs w/out aligning right margin
16 N,A,S JGET Get justification margins from text
12 N,A,S JOIN Join two or more lines by deleting CRLFs
16 N,A,S JUST Justify paragraphs and align at right margin
19 N,A LAMBDA Switch to given file in READONLY mode
19 N,A LINCNT Type length of current line, plus more info
19 N,A LOOKUP Switch to given file in READONLY mode
22 N,E LPAREN Search for next "(", crossing page boundaries
19 N,A M Make the current line start a new page
19 N,A,S MAIL Mail a message to someone
19 N,A MARK Make the current line start a new page
19 N,A,E METACONTROL Make next cmd char have both META and CONTROL bits
29 N,A,E MSG Operate on current message with next command
19 N NDFAIL Make a New Directory line (FAIL type) for page
19 N NDSAIL Make a New Directory line (SAIL type) for page
19 N,A,E NONEMPTY Move to next non-empty line on page
22 N,A,E PAREN Set the chars searched for by parenthesis cmds
29 N,A,E PARTIAL Operate on current message with next command
22 N,A,E PINFO Type out info about last parenthesis command
19 N,A PPSET Ensure that the page printer is positioned ok
19 N,A PROTECTION Set or read the protection key of the file
26 N,A,E PUTDEFS Write out all current macro definitions in a cmd file.
19 N,A,E QUIT Exit to monitor without writing out the file
Page Modes ⊗X Command Meaning
19 N,A READONLY Disallow changing the file
19 N,A READWRITE Allow changing the file
26 N,A REDEFINE Define a macro from incore page or attach buffer
19 N,A,S REMIND Enter a REMIND-system reminder
25 N,A,E RESUME Resume expansion of a macro that was stopped early.
22 N,E RPAREN Search for next ")", crossing page boundaries
23 N,A,E RSYS Run a given system program, with RPG startup
23 N,A,E RUN Run a given user program, with RPG startup
19 N,A SAVE Write out incore page(s) in E$SAVE.TXT
19 N,A,S SEND Send a message to someone logged in
19 N,A,S SIN Replace tabs with equivalent numbers of spaces
16 N,A,S SJFILL Separate text into justified sentences
16 N,A,S SJUST Separate into justified right-aligned sentences
19 N,A,S SPOOLC Spool incore page(s) on the line printer
25 N,A,E STOPALL Set action on macro error to stop all macros.
25 N,A,E STOPHOW Find out setting of macro error action.
25 N,A,E STOPONE Set action on macro error to stop just one macro.
25 N,A,E STOPZERO Set action on macro error to ignore errors.
18 N,A,S TABLE Line up entries in a table
19 N,A TELLME Send a report of latest commands to ALS
19 N,A,E TERSE Enter terse mode--suppresses some typed info
18 N,A,S TGET Same as TJGET command (see below)
19 N,A,S TIN Replace multiple spaces with equivalent tabs
18 N,A,S TJFILL Justify paragraphs that begin with a table
18 N,A,S TJGET Get margins for TJFILL/TJUST from text
18 N,A,S TJUST Justify & R-align paragraphs beginning w/table
19 N,A TMPCOR Write out TMPCOR file used by E
23 N,A TV Swap to the TV display editor
19 N,A,S TYPE Type out line(s) of text
28 N,A UPDATE Write out the updated incore directory
19 N,A,E VERBOSE Enter verbose mode--types out extra info
19 N,A,E WRITTEN Type out who previous wrote the file and when
19 N,A,S XSPOOL Spool incore page(s) on the XGP
Abbreviations and explanation of E documentation. Credits.
This version of the E manual is intended for on-line use by the normal
user. It may be referenced at any time while editing another file
simply by typing a <CONTROL>? command. One may always return to one's
original file by typing the <CONTROL>H command.
A simplified form of this manual for the beginner is available by
typing HELP ETEACH with a carriage return to the system. This copies a
file named TEACH into one's file area and allows one to read it and
modify it for practice.
This is p. 4 of E.ALS[UP,DOC] (see the top line with asterisks).
Page 1, the "directory" page, is automatically prepared by E, and in
this case has been planned to be of maximum help to the user. There is
also an Index of Commands on p. 3.
ABBREVIATIONS used in this manual and in TEACH to characterize commands.
α means hold the "CONTROL" key down while typing a character.
β means hold the "META" key down while typing a character.
αβ means hold both "CONTROL" and "META" keys down while typing.
⊗ means use either α or αβ with the next character.
Most commands are single characters with one or both of the two keys.
Additional abbreviations
<cr> carriage RETURN key. <lf> LINE feed key.
<tab> TAB key. <alt> ALT-mode key.
<bs> Back-Space key. <form> FORM-feed key.
<vt> the VT key. <clear> the CLEAR key.
CURRENT means the current line (normally with an → or ↔ on the left).
Credits.
Dan Swinehart wrote TV, the original version of the display editor,
and created the original version of TEACH. Fred Wright wrote the FAIL
version of TV (called E). Brian Harvey modified TEACH to reflect
differences between E and TV. Arthur Samuel and Brian Harvey are
responsible for this version. Address all comments and questions to
Samuel, who is currently trying to fix the remaining bugs in E.
Disclaimer.
An attempt has been made to present a coordinated view of E. To this
end some simplications have been made. The experienced user may develop
techniques that are not described in this manual. Any outright errors
should, however, be called to our attention.
General remarks.
E is a fast display-oriented text editor for disk files. By using
random access to individual pages, E can move around quickly within a
file without having to be continually recopying the file; and only those
pages whose texts are changed are ever written out to the disk. E keeps
one or more contiguous pages in core and, on display terminals, shows to
the user a portion of this text as if through a window, thus showing
lines of text in context rather than isolated. Various commands are
available for moving the window from place to place in the file and for
moving around within the window. (Normally only one page is kept in
core, but the user can cause several contiguous pages to be kept in core
to provide even faster movement among those pages.) On displays, a line
pointer (arrow) and an underscoring cursor are used to mark the position
in the text where editing is to occur. On non-display terminals, text
is typed out instead of displayed.
Note: On Datamedia terminals (DMs), no arrow is used to indicate the
current line. Instead, the terminal's cursor is left under the first
character of the current line.
The window of text on a display screen is bordered above and below
by lines consisting mainly of asterisks or dots but which also include
information about the editing. A top or bottom border will be mostly
ASTERISKS when the last text line in that direction is visible
ON-SCREEN, and the border line will be mostly DOTS when there is more
text OFF-SCREEN in that direction.
The border line at the top is called the header line, and the border
line at the bottom is called the trailer line. The information on the
header line includes:
(1) the number of the text line just below the header,
(2) the number(s) of the incore page(s),
(3) the name of the file, and
(4) the editing modes.
The trailer line reports:
(1) the number of the current line,
(2) the total number of lines on the current page,
(3) the number of the current page,
(4) the total number of pages in the file, and
(5) some information about the size of the page(s) in core.
This last item tells the page's size with respect to the number of
records that it currently occupies on the disk. The amount of room the
page currently uses on the disk is given in records followed by the
letter "R". Following this is a number that shows how much spare room
there is for this page on the disk or how much extra room the page needs
in order to write it out to the disk. The amount of spare room or extra
room needed is reported in characters and is followed by the letter "C"
provided the number is 640 characters or less. In this case, a negative
number means there is that much room to spare and a positive number
means that much extra room is needed. If the amount of spare or extra
room is more than 640 characters, it will be reported in records (640
characters/record) and will be followed either by the letter "B" (for
Bloated) if there is room to spare or by the letter "X" (for eXpand) if
more room is needed.
If the file is not formatted, only a "?R" will appear where normally
the R and C/B/X fields appear.
Extra records indicated by a "B" on the trailer line will never be
removed automatically, although they can be removed by the ⊗XBURP
command.
E does not make a separate disk copy of the file being edited unless
that is requested by the use of a special command (described later), so
take care--when you write out a page, the former contents of that page
are lost.
Basic editing in E (on displays) utilizes the system line editor for
editing a single line at a time. E loads text from the current version
of a text line into the display's line editor and then lets you edit it
with the usual system line editor commands. When you are done with the
line, you type <cr> (or some other command) to give the edited text back
to E.
E achieves its speed (1) by using the system's line-editor and only
changing the core copy of the text on the completion of a line edit, and
(2) by updating the disk copy of the page only on the completion of a
page edit (automatically effected by moving to another page). You can
undo an entire page of incorrectly made modifications by cancelling an
update, but unfortunately, you can also lose an entire page of desired
modifications or additions if the system should go down unexpectedly.
E is best understood by recognizing that it operates in a few
different modes and that many commands are appropriate only to certain
modes. In fact, a couple of commands have quite different effects
depending upon the mode that E is in at the time when the command is
given.
The dominant mode is the NORMAL mode. This allows for page, window
and line pointer movement commands and commands which enter the other
modes.
PAGE CHANGING, APPENDING, DIVIDING and COMBINING: ⊗XAPPEND β<ff> ⊗XMARK ⊗XDELETE
PAGE CHANGING commands.
PAGE-CHANGING commands are single characters typed with the CONTROL key
held down or with both the CONTROL and the META keys held down. They may
take modifiers as shown below. Note: if you have more than one page in
core, then there is a slight difference between the commands αP and αβP.
αP Go to the next Page.
αβP Go to the next Page that is not already in core.
⊗7αP Go to page 7.
⊗7αβP Go to page 7, retaining only it in core.
⊗+⊗4αP Go forward 4 pages.
⊗+⊗4αβP Go forward 4 pages from the last page in core.
⊗-αP Back up to the previous page.
⊗-αβP Back up to the previous page that is not already in core.
⊗-⊗3αP Back up 3 pages.
⊗-⊗3⊗P Back up 3 pages from the first page in core.
It is good practice to limit the page size to less than 150 lines.
This eases the load on the editor and makes the directory of more use.
The directory will be much more useful if you also make it a practice
to start each page with a suitable comment, in the case of code perhaps
containing a list of all labels to be found on the page. You can than
use a special search procedure (explained on p. 13) to expedite the
location of any desired item that is so listed.
The following commands leave the page unchanged but they refresh the
screen. If any of these commands is typed ahead, the screen will be
redrawn immediately when the command is encountered, despite any further
type-ahead.
αV Redraw the screen WITHOUT first clearing it (the fastest).
αβV Clear the screen and then redraw it (this is slower on Data Discs).
⊗3⊗V Redraw screen as above then wait 3 seconds before continuing.
<esc>I will terminate the wait.
PAGE APPENDING commands.
It is possible to have more than one page in core at the same time. This
technique makes it possible for two pages to be edited together at the
same time while retaining all of advantages of short pages, as noted above.
To do this one makes use of the EXTEND command ⊗XAPPEND<cr> command (see
page 19 for full details regarding EXTEND commands).
⊗XAPPEND<cr> Append the next page to the page or pages that are
currently in core so that the two or more pages may be
viewed and edited togather.
PAGE DIVIDING commands
A page may be split into two pages in either of two ways, one way
leaving only the newly created page in core and the second way leaving
both pages in core togather.
With either form of the command the current arrow line becomes the first
line of the newly created page. (See the next page for arrow moving.)
An apparent exception to this occurs if there is an attachment at
the time when the command is issued, but in this case the
attachment is first released, where-upon its first line then
becomes the arrow line and then the newly requested page is
formed.
⊗XMARK<cr> Split the current page into two pages with the arrow line
as the first line of a new page. Write out the incore
pages and retain in core only the page containing the
previous (and still current) arrow line.
If this command is given when there is some text attached,
the attached lines are first put down and then the page is
divided in two and written out. The division occurs at
the beginning of the formerly-attached lines unless those
lines are already at the top of a page, in which case the
division occurs after the formerly-attached lines. The
arrow is left at the top of the formerly-attached lines,
whose page is the only one retained in core.
β<form> Split the current page into two pages with the arrow line
as the first line of the newly created page and retain
both pages in core without writing out anything.
PAGE COMBINING commands
Two pages may be combined into one page in either of two ways.
⊗XDELETE<cr> Delete the pagemark at the end of the last incore page
and add the text that was formerly on the next page to
the present in-core page, writing out the resultant page.
To delete a page mark that divides two pages that are already in core
togather, one moves the arrow to the on-screen representation of the
page mark separating the two pages and gives the following command.
αβD When this command is given with the arrow pointing to an
on-screen page mark, the page mark is deleted and the two
adjoining pages are combined into one page. Thus, this
command will delete either regular text lines or pagemark
lines (without writing out any pages).
WINDOW and ARROW moving commands.
These are Normal-mode commands. The CURRENT line is marked by an arrow
and is the line that would be processed if one were to enter the line-
editor. In the descriptions below it will be referred to as the arrow
line.
The first set of commands control the position of the window on the page.
The arrow is usually repositioned by these commands.
<form> Advance the window, that is, move the last line to the top. This
command (without control bits) does not advance the window beyond
the range of the in-core text.
An argument may be used (typed with control bits and preceding
the <form) to define the number of windowfuls to be advanced.
⊗W This is an older (still functioning) command to do the same thing.
⊗0<form> Advance half a window.
⊗0⊗W This is an older command to do the same thing.
αβ<form> Advance the window as defined above but replace the in-core text
by the next page if the the end of the in-core text is already
within the window.
β<form> This command is NOT a window moving command (see page 6 for its
explanation). Do not confuse it with <form> or αβ<form>.
<vt> Move the window up so that the first line becomes the LAST. This
is the reverse of <form>. This command without control bits does
not back up beyond the range of the in-core text.
⊗0<vt> Back up half a window.
αβ<vt> Move the window up so that the first line becomes the LAST. This
command (with both control bits), will cause the in-core text to be
replaced by the next earlier page if the start of the in-core text
is already within the window.
The following commands move the position of the window on the page, leaving
the arrow so that it still points to the same line of the text, if this is
possible, otherwise causing it to point to the first or last line on the
window.
⊗J Move (JUMP) the window so that the arrow line is at the top.
⊗0⊗J Move (JUMP) the window so that the arrow line is at the middle.
⊗-⊗J Move (JUMP) the window so that the arrow line is at the bottom.
⊗3⊗J Move (JUMP) the window so that the arrow line is 3 lines higher
in the window (with the top as the limit).
⊗-⊗7⊗J Move (JUMP) the window so that the arrow line is 7 lines lower
in the window (with the bottom as the limit).
Note that the default argument for the J commands is, in
effect, infinity, with the argument 0 having a special meaning
rather than being a undefined.
⊗T Glitch the screen so that 4 additional lines are displayed at the
or top (⊗T) or bottom (⊗B) of the screen. An argument, if used, is
⊗B in multiples of 4 lines of glitching. If either of these
commands is given from the line editor, the arrow is maintained
on the same text line, which is not permitted to move beyond the
edge of the screen, and you are left still in the line editor.
The following commands move the arrow with respect to the window, without
moving the window.
⊗∧ Move the arrow to the top line in the window.
⊗3⊗∧ Move the arrow to the line that is 3 down from the top of the
window.
⊗9⊗9⊗∧ Since this would be off of the window the arrow is simply moved to
the bottom of the window. (The next command does this more easily).
⊗∨ Move the arrow to the bottom line in the window.
⊗4⊗∨ Move the arrow to the line that is 4 up from the bottom of the
window.
The following commands move the arrow with respect to the text. Should this
require the arrow to leave the currently displayed window, the window is
shifted, usually so that the arrow line will be in the middle of the window.
<cr> Move the arrow down a line, unless at row of stars.
⊗> Move the arrow down 4 lines.
⊗≥ Move the arrow down 1/2 screen.
<bs> Move the arrow up a line (cannot be typed ahead on non-displays).
⊗U Move the arrow up a line (works better than <bs> on non-displays).
⊗< Move the arrow up 4 lines.
⊗≤ move the arrow up 1/2 screen.
αL Move the arrow to the first line of the current page.
αβL Move the arrow to the first line of all the incore text.
⊗5αL Move the arrow to the 5th line of the current page.
⊗5αβL Move the arrow to the 5th line of all the incore text.
⊗∞αL Move the arrow to the end of the current page.
⊗∞αβL Move the arrow to the end of all the incore text.
The following comands move the arrow with respect to the text, as above,
AND they enter the LINE-EDIT mode. They may also be given when in the
LINE-EDIT mode (see p. 9) but they then require αβ with the arguments.
⊗↑ Enter the LINE-EDIT mode with the cursor at the end of the
previous line.
⊗3⊗↑ Enter the LINE-EDIT mode with the cursor at the end of the
third previous line.
⊗↓ Enter the LINE-EDIT mode with the cursor at the end of the
next line.
⊗6⊗↓ Enter the LINE-EDIT move with the cursor at the end of the
sixth line forward.
The following commands remove text lines from the page.
αβD DELETE the entire CURRENT line.
This takes both α and β since αD has a different meaning.
Use with caution, the only way to undo a line deletion is
to cancel all corrections to the current page that have
been made since the last disk update.
⊗4αβD Delete 4 lines starting with CURRENT.
Two NORMAL-MODE commands that may be used to save an edited page are:
⊗. Write the current page (as corrected) into the disk file.
Note, this is done automatically with a change page command.
⊗E Do a ⊗. and then EXIT to the system. This is not a legal
command to execute during macro expansion because the same
command is used to put down any attach buffer (see p. 10).
After you exit from E, you can get back into E at the same
place by immediately using the system command CONTINUE.
Most of the NORMAL-MODE commands require the use of the CONTROL key
and perhaps the META key. <cr>, <vt> and <form> are exceptions.
LINE MARKING commands.
E provides the facility of marking up to 23 line locations with a rapid
way to return to these locations by using the following commands.
Marks are relative with respect to the line locations on the page but the
stored values are corrected for line and page insertions and deletions so
that the marks appear to stick with particular text lines. However, the
justification commands and the line-breaking and line-joining commands do
not adjust marks properly, so those commands may cause the marks to move
slightly from the originally marked text lines.
Marks do not accompany attachments and they do not disappear when lines
are deleted. Instead, marks on lines that are attached or deleted are
moved to the first remaining line after the attachment or the deletion.
The ⊗XCANCEL command resets the marks for the page being cancelled to the
values they had when this page was last saved by an αβ. or page changing
command. Incidentally, if all marks, including those on other than the
current page, are removed by an αβ0αβM command, they may all be restored
by the ⊗XCANCEL command, (if this is done before any page saving command)
with, of course, the accompanying restoring of the text of the current
page.
Marks are saved during ⊗ε, ⊗λ, ⊗? and ⊗H file-switching operations and are
restored on returning (by ⊗H or number) to a previously marked file.
αβM Mark the CURRENT location, recording page number
and line number.
αβ0αβM Erase all MARKS.
αβ-αβ0αβM Erase all MARKS on the current page only
αβ-αβM Erase the MARK on the current line only.
αM Go to the next MARK (cyclicly).
α-αM Go to the previous MARK (cyclicly).
α2αM Go the the second Mark forward from here (cyclically).
α-α3αM Go the the third Mark before the current location (cyclically).
LINE-EDIT commands.
E uses the line-editing commands that are a part of the operating
system. There is a limit (usually 133) to the number of characters that
the line editor can handle.
Typing a character without a CONTROL or META key will normally invoke
the line editor and the character is typed into the CURRENT line. A
cursor will appear under the first character in the line and in that
position where the next typed character will go. A character so typed
overwrites the character that was at the cursor's position. E will be
in the LINE-EDIT mode.
A word of caution--it is usually safe to continue typing on entering
the LINE-EDIT mode without waiting for the system to catch up. Most of
the earlier bugs that caused this to fail have been fixed but it is wise
to look before giving a carriage return and if anything is amiss to type
<alt> and start over again.
When the arrow appears to point at the bottom row of asterisks
(which, of course, is not in the text) E will accept anything that is
typed as an added line of text. The asterisks temporarily disappear
only to reappear below the new line on the completion of the addition,
and E reverts to the NORMAL mode.
When in the LINE-EDIT mode a <cr> will terminate the mode and move
CURRENT to the next line. A α<cr> will terminate the LINE-EDIT mode
without moving CURRENT. Remember that the line corrections do not
appear in the core image until you leave the line-editor mode.
Also remember that the version on the disk still does not show your
corrections until a disk update has been initiated. When in this
intermediate state the letter W will appear at the end of the title line
(with asterisks or dots at the top of the window, meaning that something
is yet to be written.
If your change will require the directory to be changed, this will be
shown by the letter D in this top line. The letter X can also appear if
the change requires an extension in the space on the disk assigned to
the current page. The letter X also appears on the trailer line with a
number specifying the number of extra records (of 128 words) that will
be required. If no extra records are required this X is replaced by the
letter R following a number specifying the number of records that the
page occupies or will occupy on the disk. After a deletion the letter B
may appear in place of this R or X, again preceded by a number that
specifies the number of all-null records that the page will contain.
By the way, window moving commands do not automatically update the
disk, whereas page changing commands always do an update.
Most of the line editing commands listed below will also enter the
LINE-EDIT mode from the NORMAL mode, except when the arrow is pointing
either at the row of asterisks (at the end of the page) or at an incore
pagemark. However, the following line editor commands will not enter
LINE-EDIT mode from NORMAL mode, where they have different meanings:
αT, αB, αL, α<form>, <bs> and ⊗<bs>.
If you make a mistake and perhaps lose some valuable information hit
<alt> rather than <cr> and your data will reappear as if by magic.
The following commands move the cursor without changing the line.
α<space> Move the cursor to the right 1 space.
α4α<space> Move the cursor 4 spaces to the right.
α<bs> Move the cursor to the left 1 space.
. α5α<bs> Move the cursor 5 spaces to the left.
α<tab> Move the cursor to the end of the line.
α<form> Move the cursor to the start of the line.
αS then <char> Move the cursor to the next occurance of <char>.
α3αS then <char> Move the cursor to the 3rd next occurance of <char>.
αB then <char> Move cursor backwards to nearest occurance of <char>.
This command will not enter the line editor from NORMAL
mode, where it has a different meaning.
α3αB then <char> Move cursor backwards to 3rd nearest occurance of <char>.
The following commands allow you to insert or delete characters.
β<char> Make room and insert <char> ahead of the cursor
position.
αD DELETE a character and move the rest of the line to the
left. If at the end of the line, this will append the
next line to the current one. E will prevent this from
being done if the resulting line would be too long for
the line editor.
α4αD Delete 4 characters starting at the cursor position but do not
append the next line should the count exceed the number of
remaining characters in the line (unless command is given when
cursor is at the end of the line).
αK<char> KILL the line starting with the cursor position up to but
not including the character typed. Do nothing if the no
such character is found.
αK<cr> Kill the rest of the line starting with the cursor position.
α4αK<char> KILL the line up to the 4th occurrance of the character.
αL<char> KILL BACKWARDS starting with the previous character on back to but
not including the character typed. Do nothing if the no
such character is found before the cursor. This command will
not enter the line editor from NORMAL mode, where it has a
different meaning.
αL<cr> Kill BACKWARDS everything before the current character.
α4αL<char> KILL backwards everyting back to the 4th occurrance of the character.
The following command allows you to correct one of the most common typing errors.
αT Reverse the order of the two characters just ahead of the cursor.
This command will not enter the line editor from NORMAL mode,
where it has a different meaning.
The following commands allow you to leave the LINE-EDIT mode.
α<cr> Accept the line, leave LINE-EDIT mode but do not move the arrow.
<cr> Accept the line, leave LINE-EDIT mode and move the arrow down.
β<cr> Insert a <cr> before the cursor position and leave LINE-EDIT mode.
αβ<bs> Accept the line, leave the line-edit mode and move arrow up
one line.
For completeness the <cr> and <bs> commands are listed togather to
remind you that they do quite different things depending upon the
associated control keys.
<cr> Accept the line, leave LINE-EDIT mode and move arrow down.
α<cr> Accept the line, leave LINE-EDIT mode but do not move arrow.
β<cr> Insert a <cr> before the cursor position and leave LINE-EDIT mode.
αβ<cr> Break line at cursor and enter Line¬Insert mode with the new
empty line between the two segments of the old line.
<bs> BACK SPACE, deletes like β<bs> if at the end of the line,
otherwise just moves the cursor to the left like α<bs>.
α<bs> Move cursor to the left WITHOUT deleting.
β<bs> Delete the character to the left of the cursor position.
αβ<bs> Close line and move arrow up a line.
The following commands allow you to enter or leave the INSERT and the
LINE-INSERT mode.
αI Enter INSERT mode (like holding META down continuously).
Everything that you type (including carriage returns)
will be inserted until you type another line command.
Any LINE-EDIT command will cause one to leave the INSERT
mode, for example, the α<space> command. If you give
this command while at the end of a line, you will enter
LINE-INSERT mode instead of INSERT mode.
αβI Break line at cursor and enter Line¬Insert mode with the new
empty line between the two segments of the old line.
α<cr> Accept the line, leave Insert or Line-insert mode but do not
move arrow.
<alt> Restore the line to it original condition and leave the
LINE-EDIT mode. (See p. 11 for its action when in LINE-INSERT mode.)
The following commands allow you to leave the line-edit mode, move to another
line and reenter the line-edit mode, all with one command.
⊗↑ Accept the line, then move to the end of the previous line.
αβ3⊗↑ Accept the line, then move to the end of the third previous
line.
⊗↓ Accept the line, then move to the end of the next line.
αβ6⊗↓ Accept the line, then move to the end of the sixth line
forward.
⊗; Accept the line, then edit the previous line from the same
display position as that from which this command was given.
αβ3⊗; Accept the line, then edit the third previous line from the same
display position as that from which this command was given.
⊗: Accept the line, then edit the next line from the same
display position as that from which this command was given.
αβ6⊗: Accept the line, then edit the sixth line forward from the same
display position as that from which this command was given.
The above commands work in both NORMAL and LINE-EDIT modes, as does
the following command which allows you to copy a line and then edit it.
⊗Q Insert a copy of the line just above CURRENT and open it
for editing (i.e., enter LINE-EDIT mode in new line).
If you are editing a line and type something that the line editor
does not understand it will usually ignore the error (after thinking
about it for a moment) but don't bank on this too heavily because it can
fail.
If you type a legal ⊗ command (some are forbidden) when in LINE-EDIT
mode the line will be accepted as edited and the command will be carried
out.
(Typing ⊗. in LINE-EDIT mode returns to LINE-EDIT mode automatically
without writing the page because this command is illegal in LINE-EDIT mode.)
The α<cr> command, that works to recall a line from the system buffer
in the system's monitor mode, is replaced by the ⊗Q command as described
above.
Attach and Copy commands: ⊗A ⊗C
The attach (⊗A) and copy (⊗C) commands permit blocks of lines or
copies of them to be moved up and down on the page or from page to page,
or from file to file, as desired.
The ⊗A command removes one or more contiguous lines of text from the
core image of the page and places them in a special attach buffer. The
lines are still displayed on the screen in their original position, and
an "A" is displayed at the top of the screen to indicate that you are
now in attach mode.
The ⊗C command makes a copy or one or more contiguous lines and
places the copied lines in the attach buffer. An "A" is displayed at
the top of the screen, indicating that you are now in attach mode.
Note that if more than 8 lines are attached, then only the first 4
lines and the last 3 lines are shown so that one can see a few lines
both before and following the attached lines to be certain as to their
relationship to the rest of the page. The attached lines are marked by
vertical bars (thus |) at the left, except on Datamedias, where they are
indicated by being displayed in BOLD rather than lightface (this makes
attached blank lines somewhat hard to detect).
The apparent position of the attached lines can be made to move up or
down on the page or from page to page with the usual CURRENT-moving
commands to prepare for a final command which will deposit the attached
lined back into the core image of the text at the indicated position.
Perhaps this can be made clearer by remarking that the CURRENT line
designation is actually attached to the line following the section of
text that has been removed (although the → does not appear). What one
is actually doing when one appears to be moving the attached lines is to
move CURRENT around and E cleverly always displays the attach buffer on
the screen just above CURRENT, where it will in fact be put if one gives
the deposit-line command.
Basic commands.
⊗A ATTACH the CURRENT line and mark it with a "|".
⊗3⊗A ATTACH 3 lines starting with CURRENT and mark these with "|'s".
If a number greater than 8 is used, (for the 3 in the example),
only the first 4 and the last 3 lines are shown. A row of dots
is used to indicate that some attached lines are not shown.
⊗E Deposit the attached lines where displayed and Exit ATTACH mode.
Note: this command has a different meaning when one is NOT in
the ATTACH mode (it then means EXIT from E). Don't stutter when
typing it. Give the system time to react.
αβR REPLACE the attached lines in their original location and leave
the ATTACH mode.
αβK KILL the attached lines (they go away beyond recall) and exit
from the ATTACH mode. Note that αK does not work.
If you make a practice of using the CONTROL key only, when in
the ATTACH mode, (when it works) you will avoid the danger of
accidentally killing an attachment, if you mean to hit a J or
an L and hit a K instead.
⊗C Make a COPY of the CURRENT line and ATTACH this copy.
If there is already something in the ATTACH buffer when this
command is given then the entire attachment will be deposited and
re-copied. This provides a convienent method of making
multiple copies of any desired portion of text.
⊗5⊗C Make a COPY of 5 lines starting with CURRENT and ATTACH these.
Relative arguments.
Relative-argument commands add or remove lines from the end of the
attach buffer thus:
⊗+⊗A Attach 1 more line beyond those already attached.
⊗+⊗3⊗A Attach 3 more lines beyond those already attached.
⊗-⊗A Detach 1 line from the end of those already attached.
⊗-⊗2⊗A Detach 2 lines from the end of those already attached.
⊗+⊗C Copy 1 more line beyond those already attached.
⊗+⊗4⊗C Copy 4 more lines beyond those already attached.
⊗-⊗C Delete (kill) 1 line from the end of the attached set.
⊗-⊗2⊗C Delete (kill) 2 lines from the end of the attached set.
If the apparent position of the attached lines have been moved before
these relative-argument commands are given then additions and deletions
are made in terms of the apparent new location. This gets a bit hairy
in the case of deletions but it is a very useful device for assembling a
set of copied lines from several different places.
Note that a single attach command is only effective to the end of the
current page, and an attachment is deposited all on the same page.
A word of warning, a hazard is involved in using ⊗A to move lines
from page to page. The attached lines can be lost if the system should
crash during the interval between the removal of the attached lines from
one page and the final updating of the page to which they are moved.
This hazard can be avoided by copying the lines rather than attaching
them and then going back and deleting the original copy. This
precaution is hardly necessary for a line or two but it is a wise one
when you are moving large blocks of text.
Moving lines from page to page takes time, so don't get impatient.
This is a good place to comment on the RIPPLING report, that you may
have noticed in the scratch-pad lines at the bottom of the screen. This
notice appears when a major rearrangement of the text between records
becomes necessary. This also takes time.
LINE-INSERT mode.
While one can add text at the bottom of a page by simply moving the
CURRENT marker so that it appears to point at the bottom row of
asterisks (not to dots), a special mode is used to insert lines of
text at other points. As a matter of fact it is usually better to enter
this special LINE-INSERT mode if one is to type several lines even when
at the end of a page.
When in the LINE-INSERT mode, typing a carriage return, inserts the
carriage return into the text, writes the line into the core image and
enters the LINE-EDIT mode for the next line to be typed. Care must be
taken to leave the LINE-INSERT mode properly or else undesirable letters
may appear in your text.
The fact that the editor is in the LINE-INSERT mode is signalled by a
double arrow CURRENT line marker ↔ in place of the right arrow →. (On
Datamedias, neither the double arrow nor the right arrow is used. Only
the terminal's cursor marks the current line.)
To enter the LINE-INSERT mode:
αβ<cr> Enter LINE-INSERT mode, insert a blank line ahead of the text
or at CURRENT and mark the new line with the double arrow ↔. If
αβI you are in the middle of a line, this will break the line into
two separate lines, with the ↔ at the start of a blank line
between these two separate lines as newly created. An "I"
will be displayed at the top of the screen to indicate that
you are in LINE-INSERT mode.
While in LINE-INSERT mode:
<cr> Accept the line and move the ↔ to a newly inserted blank line.
α<cr> Leave the LINE-INSERT mode and accept the line in question.
αβ<cr> Insert a blank line (if given at the start of a line). If you
are in the middle of a line, this will break the line into two
separate lines, and position the cursor to be ready to accept
text on an inserted blank line between the two portions. If
you are at the end of a line this will be accepted as a simple
<cr> as above.
αβ<bs> Leave the LINE-INSERT mode but move the → back to the line
ahead of the accepted line.
<alt> Leave LINE-INSERT mode without moving the arrow. If the
last line inserted is empty, delete it.
Handling very long lines. ⊗XBREAK ⊗XJOIN
⊗XBREAK will break lines at any specified column position by
inserting CRLFs. The column position may be specified by a numeric
argument following BREAK; the default BREAK column is originally 80 but
any typed-in column argument overrides this and is sticky. The command
takes effect starting with the current line (as marked by the arrow) or
with the first line of the ATTACH buffer if there is an attachment.
Breaks occuring within a TAB are assumed to precede the TAB, that is,
the TAB goes at the start of the text on the next line. There is an
exception to this if the break is set at 8 or less and if a TAB occurs
at the start of a line, when the TAB will be placed on the first line.
The current line position is not changed by this command.
If ⊗XBREAK is given WITH a preceding numeric argument, then that many
lines are broken (not, however, extending beyond the end of the page or
attach buffer) and each line is broken as many times as necessary to
prevent any resulting line from being longer than the specified column
argument.
If ⊗XBREAK is given WITHOUT a preceding numeric argument, then the
current line (or the first attached line) is broken ONLY ONCE, at the
specified (or default) column position.
The ⊗XJOIN command joins lines without introducing spaces for deleted
CRLFs. ⊗XJOIN will take a preceding numeric argument specifying the
number of lines to be joined (default is 2 lines). ⊗XJOIN takes effect
at the current line or at the first line of the ATTACH buffer and does
not cross page boundaries, or the end of the attach buffer. The current
line position is not changed by this command.
Thus ⊗XBREAK and ⊗XJOIN can be used together to manipulate, and to
allow editing of, very long lines because these commands do not change
any text in affected lines except for the deletion or insertion of
CRLFs.
SEARCH (or FIND) commands: ⊗F ⊗XFIND ⊗* ⊗XEXACT ⊗F<string>⊗P ⊗F<string>⊗:
The search can be specified in several different ways:
1) The search can be for an alphameric string that is separated from
the rest of the text by non-alphameric characters or it may be for any
string regardless of its surroundings. Note that the FIND commands
normally make no distinction between upper and lower case, but the
⊗XEXACT command can be used to force such a distinction.
⊗XEXACT<cr> Distinguish between upper and lower case in subsequent
FIND commands of all kinds. FIND commands will only
find string occurrences whose cases exactly match
those given in the search string.
⊗-⊗XEXACT<cr> Do not distinguish between upper and lower case in
subsequent FIND commands. This is the default.
For single-page searches the commands are:
αβFSmith<cr> Find just plain Smith or smith but not this string in
in $smith, in blacksmith or in Smithsonian. Note that
% and _ are accepted as alphamerics.
αFSmith<cr> Find smith as an isolated word or as part of a longer
string (in blacksmith for example). The string will
be found even where not delimited by non-alphamerics.
⊗0⊗F Type out the search string used in the last single
page search command (⊗F). No search is done.
Note that no space is used between the ⊗F and the start of the string.
For multi-page search commands are:
αβXFIND Smith<cr> Find a delimited string ("Smith" here).
αXFIND Smith<cr> Find the string ("Smith") regardless of surroundings.
⊗0⊗XFIND<cr> Type out the search string used in the last multiple
page search command (⊗XFIND). No search is done.
Note that exactly one space is required between the command "FIND"
and the search string. Commands starting with the letter ⊗X are EXTEND
commands which permit more than a single character to be used for the
command name, hence the need for the space to mark its end. In this
case the complete command name is FIND, but, since there are, at
present, no other commands beginning with F, only the F needs to be
typed, as αXF Smith<cr>.
Multi-page searches, made on files entered /R, are carried only as
far as the core directory has been extended. To search the entire file,
one should first complete the directory by switching to the last page
and then switch back to the desired starting page for the search. The
fact that the directory is incomplete is evidenced by the use of the "?"
in the trailer line, in lieu of the usual number, to show the total page
count (thus, "Page 13 of ?").
The delimited find command (αβF or αβXF) will not find an occurrence
of the search string that starts in column 1 of the current line, but
the non-delimited command (αF or αXF) will find such an occurrence.
A string, once specified, is sticky; that is, one need not retype the
string for a repeat of the command. The search string for a
within-a-page search is remembered independently from that for an EXTEND
search. For a repeat one repeats the command up to the string itself
and then types the desired termination (a <CR> as shown above, or any
termination listed below).
Special repeat commands exist which simplify the repeated search.
These are easier to use than the regular repeat command, described
above, but only the last executed type of FIND can be repeated. Two of
the more commonly used terminations are simulated by using different
control keys with the ⊗* command.
αβ* Find the next occurence of the string specified by the
last FIND command (whether a single page FIND or a multipage
⊗XFIND). Move the line cursor to the found line but do not enter
the LINE EDITOR, that is, duplicate a normal FIND command that is
terminated by a <CR> only. An argument may be used (such as
αβ1αβ3αβ*) to find the Nth occurence (the symbol ∞ counts as 510).
α* Find the next occurence of the string specified by the
last FIND command (whether a single page FIND or a multipage
⊗XFIND). Leave the line in the LINE EDITOR as it would be for a
normal FIND command terminated by a α<CR>. If there is something
in the ATTACH buffer, this is interpreted as an αβ* command. See
below for method of using an argument.
⊗4α* Find the fourth occurrence of the string specified by
the last executed FIND command (whether a single page or a
multipage FIND) and position the cursor under the first character
of the found string (as it would be for a normal FIND command that
is terminated by a α<CR>). If this command is given from the line
editor, the argument must be typed with both control keys (αβ) to
force activation of the line editor.
⊗0⊗* Type out the search string used in the last FIND command
executed, and indicate whether it was a single (⊗F) or multiple page
(⊗XFIND) command. No search is done.
2) The following special symbols may be used in the search string
with the meanings noted. If these characters are desired as ordinary
characters in the searched-for string they must be preceeded by the
identity symbol ≡.
Symbol Meaning
¬ The character that follows must not be in the string at
this point but any other character will be accepted.
| Any delimiter (not one of $_% nor a letter nor a digit).
∀ Any character.
≡ The character that follows immediately after this symbol
is not to be treated as a special symbol but it is to be
included as a character in the searched-for string. Use
this to quote any of these special characters.
∞ Not at present implemented, but still must be quoted.
⊂ Not at present implemented, but still must be quoted.
3) The action that is to be taken on the successful termination of
the search is specified by the delimiter used to terminate the string.
The <cr>, used above, moves the → to the found line. A repeat of the
Find command, if given, will start with this same line, but after the
found string,, so that multiple occurrences of a string within a line can
be found.
Many of the cursor moving commands and substantially all of the LINE-EDIT
commands may be used as the terminating action-defining delimiter.
Some of the more important action-defining delimiters are:
<cr> Move CURRENT to the found line or report failure.
α<cr> Terminate, as with <cr>, but move the cursor until it is
under the first character of the string. Note that this
leaves E in the LINE-EDIT mode. A second FIND command can
however be given and the next occurrence will be found. If
a FIND command is terminated with <cr>, a α<cr> will still
move the cursor to the string.
⊗J JUMP the line with the found string to the top of the
window.
αβ<cr> Enter the LINE-INSERT mode with the ↔ at a newly inserted
blank line ahead of the found line.
αP Make the search over the directory page and then display
the referenced page with the line pointer at the top line.
Note that one can give this command without having to
give an explicit command to go to the directory page.
If the search fails the current location is unchanged.
αβP Make the search over the directory page and then display
the referenced page with the line pointer at the second
occurrence of the referenced string (the first will be in
the first line of the page).
⊗: Make the search over the directory page and then display
the referenced page with the line pointer at that line
which contains the referenced string as a label (namely,
the line where the string is followed by ":", "=" or "←").
⊗+αP Just like the command without the ⊗+, except that only
⊗+αβP pages after the current one are search in the directory.
⊗+⊗: This is a very useful command when a string occurs on
several directory lines (i.e., on the first line of
several pages).
⊗A ATTACH all lines starting with CURRENT up to and including
the line with the specified string.
If used with an EXTEND command and if the string is not on
the windowed page, the attachment will begin at the top of
the page on which the string is found.
Attachments do not cross page boundries.
⊗C COPY all lines starting with CURRENT up to and including
the line with the specified string.
See ⊗A above for restriction with an EXTEND command.
αβD DELETE all lines beginning with CURRENT up to but not
including the line with the specified string.
See ⊗A above for EXTEND command restriction.
This is a very dangerous command so use it with caution.
⊗\ Terminate the searched-for string and prepare to accept a
substitution string. The substitution string is then typed
in and may be terminated in any one of several ways. For
details see String Substitution Commands on the next page.
Note that there is a special repeat command for this case so
do not try to use the repeat conventions that are used for
simple searches.
<alt> Abort the present command and cancel the string specification.
4) The search can be for the first occurrence of the specified string
or for the n'th occurrence.
⊗3⊗Fsmith<cr> FIND the 3rd occurrence of SMITH.
5) The <ESC>I command will terminate any multipage FIND in progress
at the end of the page on which it happens to be searching, and it
will report this page number.
6) The <ESC>I command will also terminate any multiple substitution
(even the one-page type) after the next substitution is done.
SUBSTITUTION commands: ⊗\
String substitution commands are initiated by first giving a normal FIND
command but using one of the two special string terminating characters,
⊗\ (back-slash) or <lf> (linefeed). This is then followed by the
substitution string which, in turn, is terminated by either a simple
carriage return (which may be preceeded by an argument, typed with
control keys) or by α<CR>. Note, many of the otherwise acceptable Find
command terminations are not meaningful with the substitution commands
and are not allowed.
Please observe that an argument before the initial FIND command means
find the specified occurrence before making the substitution while an
argument before the final termination means make the substitution the
specified number of times starting with the initial arrow position (or
with the initially specified occurance, if there is an initial
argument).
The prefered method for making repeated substitutions is to request an
initial single substitution and then to ask for the desired remaining
substitutions by the αβ\ command prefaced by an argument specifying the
remaining number of times the substitution is to be made.
Characters in the searched-for string that are preceeded by the special
control symbols ¬ and ≡ and all characters that are represented by the
special symbol ∀ or by the symbol | (see p. 13 for the explanation of
these symbols) are treated as any other character and are deleted and
replaced by the substitution string. The "partial definition feature"
as implemented in SOS is not at present available. The | symbol in the
searched-for string can not be used to replace a carriage return.
Note: The FIND command does not find the very first delimited
string on the line to which the cursor is pointing (unless it is
in fact preceeded by delimiter). This limitation is of little
consequence for the simple FIND but it is an annoyance if one
wants to replace all occurances of a symbol (or string) which
happens to be the very first symbol (or string) on a page. One
can introduce an initial space into the first line or one can
introduce an initial blank line temporarily and have the cursor
at this line. The space or line can then be removed after the
substitution.
In the rest of this write-up "all occurances" means "all except the very
first character or string on the line to which the cursor is pointing at
the time that the command is given when the search request is for a
delimited string".
Sample commands.
αβFSTRINGαβ\"String"<CR> Find the first occurance of the
string STRING, whether typed in lower or upper
case letters and replace it by the substitution
string as typed, that is, enclosed in quotes and
with the initial letter only in CAPS. Limit the
search to the current page starting at th cursor
location.
αβFSTRING<LF>"String"<CR> Same as the above example, but
typeable on a non-display because of the linefeed
that is used instead of αβ\ to end the search
string.
αβFSTRINGαβ\"String"αβ∞<CR> Find all occurances of the string
STRING, whether typed in lower or upper case
letters and replace them by the substitution
string as typed, that is, enclosed in quotes and
with the initial letter only in CAPS. Limit the
search to the current page starting at th cursor
location.
⊗9αβFSTRINGαβ\"String"αβ∞<CR> Find all occurances of the string
STRING, as above, but start the substitution with
the 9th occurance.
αXFIND ←αβ\ <BACK ARROW> α<CR> Find the first occurance
of the character ← whether on the current page
or a subsquent one and replace it by the string
<BACK ARROW> (including the < and >) and with
spaces introduced before and after these
characters. Leave the resulting line in the
line editor.
The <CR> termination is the faster mode of operation in that it does not
use the the line editor and it is not subject to any effective
limitation as to the length of lines that may be handled. This mode
does have one defect in that the substitution is completed and is not
subject to the simple <ALT> method of aborting a single line correction.
When the α<CR> termination is used the substitution is made via the line
editor and the results are left in the line editor's buffer so that the
substitution may still be aborted by the usual <ALT> command.
The usual rules apply to the specification of the searched-for string.
The substitution string may, however, contain certain delimiters (spaces
in particular) whether or not the search is for a delimited string and a
distinction is made between upper and lower case letters. Only the
searched-for characters without delimiters are replaced. To be
specific, if one were to replace a delimited string by a null
substitution string, the two delimiters would remain in the corrected
text.
Currently, substitution cannot be done for the CR (or LF) at the end of
any line of text. A warning message will be isssued when you try to
make such a substitution. Also, no substitution can be done for
pagemarks (formfeeds).
The substitution string is sticky, so that a substitution command, when
successfully executed for a single occurance, may be repeated for the
next occurence by typing αβ\ only. The typing of a new string for the
searched-for string destroys the record of the previously saved
substitution string and the entire request must be retyped before this
command will be honored.
A null substitution string may be used and no longer reguires
confirmation.
Multi-page substitutions are useful but potentially dangerous as the
substitutions made on any one page are, of course, written out onto the
disk file when ever a new page is entered.
As noted earlier, typing αβ\ after a legal substitution command will
repeat the substitution. This command may be preceeded by an argument
(with control bits) and the substitution will be repeated the specified
number of times. Should substitutions occur on more than one page, all
substitutions on pages earlier than the last page will have been written
out.
The use of the command α\ rather than αβ\ is also allowed but is not
recommended. This leaves the altered line in the line buffer with the
possibility of an <ALT> abort.
Sample repeat commands.
αβ\ Repeat the previously made substitution at the next
occurance of the searched-for string using the faster
and safer mode which does not leave the results in
the line editor buffer.
αβ6αβ\ Repeat the substitution for the next 6 occurances.
α\ Repeat the substitution once but leave the results in
the line editor buffer.
⊗0⊗\ Type out the search and substitute strings last used
in a substitute command, and indicate whether it was
a single or multiple page substitute command.
The <ESC>I command will terminate any multiple substitution (even the
one-page type) after the next substitution is done.
FILE-SWITCHING and text transfering commands: ⊗ε ⊗λ ⊗H αβH ⊗∃ ⊗? αβ?
The file switching commands ⊗ε and ⊗λ cause E to close the current file
being edited (writing out the current page if necessary) and then to ask
for the name of another file to be edited. That file is opened for
editing, with any ATTACH buffer maintained while switching files. Thus
you can switch back and forth, editing different files, and easily
moving or copying text from one file to another simply by attaching the
lines desired. The ε command (ENTER) opens the new file in read-write
mode while the λ command (LOOK) opens the file in read-only mode.
All of the usual switches may follow the filename typed with these
commands; for example, you can use /8P to go to page 8 in the new file,
/E to go to the end of the file, /N to open the new file in no-directory
mode, /C to create the file you want to switch to, etc. See p. 20 for
more details.
As different files are referenced, each file is assigned a number
which can be used thereafter as an argument to the ε or λ command to
call the desired file without retyping its name. When files are called
by number, the command (e.g., ⊗2⊗ε or ⊗1⊗λ) does not ask for a filename
and the file is positioned at the last referenced page and line. Any
previously existing line marks are also restored.
Eight different files may be so referenced. Should one reference a
9th file, the least-recently-used file in the list is automatically
replaced by the newly referenced file. The user is warned of this
replacement.
The list of files with their referencing numbers can be displayed as
a mnemonic aid by the command ⊗∃.
The previously referenced file (unless it be the E-manual file) is
considered to be the HOME file and can be switched back to by typing the
⊗H command. The home file is reopened in its previous read-write
condition and at the last referenced page and line. On returning from
the E-manual file (see below) the home file conditions that existed
before going to the E-manual are reestablished; that is, if you had
switched from file A to file B then to the E-manual, the first ⊗H
command would return you to file B and the next ⊗H command would take
you back to file A. Repeated ⊗H commands thereafter would switch you
back and forth between file A and file B.
The HOME command will accept an argument to override the default page
at which the file will be opened; an absolute argument specifies the
number of the page at which to open the home file, and a relative
argument (e.g., ⊗+⊗2) specifies the relative number of pages to move
from the last referenced page in the home file before opening it.
Finally it is possible to reference the E-manual file, E.ALS[UP,DOC],
by typing the ⊗? command. The first reference to this manual will be to
page 2 which contains information on recently made changes to E.
Thereafter the manual file is opened at the last referenced page and
line. One may, however, override these default values as in the ⊗H home
command by typing an absolute or relative argument to specify the
absolute or relative number of the page to be opened.
Difficulties may be experienced in copying and moving information from
unformatted files and from files without directories particularly if
many lines are to be moved. Requests if files may be formatted should
be honored usually unless this is known to be undesirable. E is smart
enough to detect most cases when one tries to format a binary file or an
XGP file and it will tell you this and give you another chance to say
NO. If one attempts to move information TO an unformatted file, the
file in read-write mode. The usual switches /#P, /#L and
/C may be used.The new file is assigned a serial number by
which it may be called later. (The initial file is
numbered 0). When called by number the display is returned
to the last referenced page and with the arrow on the last
referenced line and all previously set line marks restored.
⊗3⊗ε Reopen the file assigned the serial mumber 3 in read-write
mode. Note that no carriage return is used in this case.
Return the display to the last referenced page. Return the
arrow to the last referenced line and restore all previous
line marks. (Use the ⊗∃ command, below, to find numbers).
⊗λ<file name><cr> Close the current file and open the specified
file in read-only mode. The usual switches /#P and /#L
may be used. The new file is assigned a serial number by
which it may be called later. (The initial file is
numbered 0).
αβ3⊗λ Reopen the file assigned the serial mumber 3 in read-only
mode.
⊗∃ List the previously referenced files with their serial
numbers. For convenience the letter H accompanies the number
in the listing of the "HOME" file and a "]" is used rather
than a ")" for the file currently being edited.
⊗0⊗∃ Move the current-file listing to location zero and flush
all other listings (to make room for more).
⊗H Return (HOME) to the last referenced file. The E-manual
file is not considered a HOME file.
⊗2⊗0⊗1⊗H Return (HOME) to the last referenced file on page 201.
The E-manual file is not considered a HOME file.
⊗-⊗2⊗3⊗H Return (HOME) to the last referenced file on a page
that is 23 pages earlier than the last referenced page.
The E-manual file is not considered a HOME file.
⊗? Close the current file and open the E manual file
E.ALS[UP,DOC] on page 2,(for changes) or, if it has been
referenced earlier, to the last referenced page and line.
page and line.
⊗1⊗? Close the current file and open the E manual file
E.ALS[UP,DOC] on page 1, the directory page.
⊗8⊗? Close the current file and open the E manual file
E.ALS[UP,DOC] on page 8.
⊗-⊗2⊗? Close the current file and open the E manual file
E.ALS[UP,DOC] at 2 pages before the previously referenced
page.
Justification: ⊗XJFILL ⊗XJUST ⊗XJGET ⊗XSJFILL ⊗XSJUST
(See p. 17 for ⊗XALIGN, ⊗XINDENT, ⊗XJCENTER)
(See p. 18 for ⊗XTJUST ⊗XTJFILL ⊗XTABLE and ⊗XTJGET)
⊗XJFILL and ⊗XJUST are basic justiification commands. There is now no
effective limit to the length of lines that may be handled by these
commands. It is always wise to do a αβ. before using these commands so
that one can undo their effect by using the ⊗XCANCEL command if necessary.
The margin justifying command ⊗XJFILL allow one to adjust the length
of textual lines by moving words from line to line as required to achieve
any desired maximum line length. At the same time this command permits
the left margin to be fixed at any desired position (both for crown lines,
i.e. first lines of paragraphs, and for normal text lines), and it allows
one either to preserve blank lines at each paragraph break or to specify
the desired number of blank lines preceding each paragraph. The ⊗XJUST
command also pads the line by distributing additional spaces between words
so as to align the right margin as well. Both commands allow the
preservation of two spaces after sentences which are terminated by any of
the characters .?!: provided two spaces (or a CRLF) originally followed
such a character.
The range of application of these commands may be limited by a
prefixed decimal argument. If no argument is specified the entire page is
justified. If there is an attachment the ATTACH buffer is justified
rather than the page. When the range is limited by a positive argument
the justification starts with the arrow line while for a negative argument
the justification will be for the specified number of lines before (but
not including) the arrow line.
⊗XJFILL or ⊗XJUST, preceded by a 0 argument, causes E simply to report
the current status of the switch setting (see below) and of the resulting
margins without any overt action other than to record any typed changes to
these values (these changes are recorded before the report is made).
The basic commands will accept a following string (separated from the
command itself by a space) which may contain a (single letter) switch, a
space, and a following string of decimal numbers separated by commas. The
values specified in this following string are sticky and need not be
retyped on a subsequent use of the basic commands if the same parameters
are desired. If only some of the arguments are to be changed, then only
these arguments need be typed with any missing numerical arguments
indicated by commas only.
The switch letter is used to specify the conditions that are to be
taken in the original text to indicate paragraphs, and it may be one of
the following, N, G, R, or A. The N (for Normal) switch is the initial
default switch.
Blank lines (lines that contain NO characters, not even spaces or
TABs) are always assumed to mean a paragraph devision (for all switch
settings).
With the N switch operative, any line that is indented by 2 or more
spaces is also assumes to be a crown line, that is, to be the start of a
new paragraph. Text without blank lines between paragraphs and with
different indents used for different crown lines may now be handled
without difficulty.
By specifying a switch letter other than N, one can now justify text
that is not in "Normal" form, for example, with crown lines that are
indented less than the normal indent of the body of the paragraphs and
without separating blank lines.
Switches
N The N switch causes E to recognize any indent greater than 1 and/or
the presence of a blank line as being a crown line indicator. This is
the switch to use under normal conditions when the body of the text
(non-crown lines) is not indented. It corresponds fairly closely to
the older form of the justify commands and hence it has been made the
initial default switch.
G The G switch causes E to scan the specified section of the text that
is to be justified and to determine from this text the indent that has
been used to identify the crown lines in the original text. The
presence of this indent is then used during the justification as a
crown line signal (a blank line is still recognized even without the
identified crown indent). This is the switch to use when you wish to
justify some text that had, at some time in the past) been justified
into some non-normal form and you are willing to let E determine the
conditions for you.
Care must be used with this switch to be sure that E will be able to
identify the crown indent correctly. The procedure used is as follows:
The text to be justified is first scanned to locate a blank line. If
one is found then the next non-blank line is assumed to be a crown line
and its indent is stored as the desired identifying indent. If no blank
lines are found within the specified text then the indents of the first
two lines are determined. If these two values are not the same the first
line is assumed to be a crown line. If the first two line indents are the
same these lines are taken to be non-crown lines and the rest of the text
is scanned for a line with a different indent and if one is found this is
taken as the desired crown indent indicator. The practical effect of all
of this is that one should not start the justification with a line that is
the last line of a paragraph, but then doing this is quite meaningless in
any case.
R (Rejustify) The R switch causes E to take the last specified crown
indent as the crown line indicator for the new justification. Note
that this switch is faster and safer than the G switch as the text
is not scanned. This is the switch to use to rejustify text that you
have already justified into some non-normal form when either you have
made some additional corrections to the text or you have decided that
you want the format changed in some way. Note that it is possible to
make changes to the text between the two justifications without having
to indent any added non-crown lines to the precise amount that was
used in the original text. Added lines that are to start new
paragraphs must, of course, be indented by the correct amount or must
be preceded by blank lines. If the format is not to be changed then
the previously specified indents need not be retyped.
A (Assigned) The A switch causes E to use the Assigned conditions for
the new justification. This is the switch to use if you have already
established the A input conditions or if you want to establish them
yourself and you then want to justify additional text. This switch is
also useful if you want to have E disregard input text indentations
and to use blank lines only for new paragraph signals. This last case
can be achieved initially by simply specifying the A switch. E will
disregard indentation conditions in the input text and take all lines,
that are not preceded by a blank line, to be non-crown lines, if the A
values are both the same. The initial default values are set at 0,0.
There are four quite different ways to establish the A values. These are:
1) By typing. A vertical bar "|" after a number in the suffixed
string means that the number is an A value. For example, 0|4,5|2 as the
string means that lines in the original text with an indent of 0 will be
taken to be crown lines and these lines are to be indented 4 on
justification and that the initial non-crown lines are expected to be
indented by 5 and are to be indented 2 on justification. Note that the
exact value of 5 has no significance since the crown line indent is the
determining factor. The exception is when the old text uses the same
indent for both crown and non-crown lines and depend on blank lines as
paragraph indicators. If this is the case then, as noted above, all lines
are taken to be non-crown lines, regardless of their indent, as long as
they do not follow a blank line.
2) By using the G switch with the justifying command and letting E
establish the input conditions.
3) By using the ⊗XJGET command, described below, to cause E to
determine the conditions used in the text. This command actually stores
these conditions as the conditions to be produced rather than as the input
conditions but then one uses the R switch with the justification command
and this copies the conditions previously stored as output conditions and
uses them as the input conditions.
4) By having already justified the text at an earlier time and not
having otherwise changed the stored justification parameters and then
using the R switch with the new command.
Typical command strings.
⊗XJUST<cr> Justify the current page (or the ATTACH buffer if in
ATTACH mode) using the default values for all parameters
that might be specified by a string following thee command
name. These default values are initially set at N
0,0,74,-1, the N signifying the Normal switch is to be
used which accepts any indent greater than 1 as well as a
blank line to signal a new paragraph. The string of
decimal numbers (reported as P,L,R,B) indicate that the
paragraph or crown indent is to be 0, the left or
non-crown indent is to be 0, the rightmost character is
not to go beyond column 74 and the distribution of blank
lines is to be the same in the resulting text as found in
the original text.
⊗XJU 0,4,66,0<cr> Justify the current page or the ATTACH buffer using the
indents and right margin as specified and leaving no blank
lines between paragraphs. The crown lines will all start
with 0 indent and the left indent for the rest of the text
will be 4. The last occupied column will be 66 and there
are to be no blank lines between paragraphs.
⊗XJFI R 10,10,,1<cr> JFILL (left margin only) the current page which has
been justified, perhaps by the preceding command, The R
switch tells E to take the former output parameters as
those that are to be used to identify crown lines. Note
that this command calls for the indents of all lines to be
the same and that paragraphs are now to be separated by
single blank lines.
Three new commands have been added for use with normal text.
⊗XJGET
The ⊗XJGET command causes E to scan the specified section of the
text and to determine the indent values that were used for crown lines and
non-crown lines and the column position of the rightmost character. It
stores these as sticky values for these parameters and these values will
then be used should a ⊗XJUST or ⊗XJFILL command be subsequently given
without suffixed arguments. The action is quite analogous to that taken
when the G switch is used with a ⊗XJUST or ⊗XJFILL command except that the
values found are stored as the conditions to be produced on a subsequent
justification rather than as the expected conditions to be found in the
original text. This command always resets the B value to its original
default value of -1, that is for there to be the same arrangement of blank
lines in the justified text as are found in the original text.
By using this command one can redetermine the parameters that were
used when the text was justified, presumably at some earlier editing
session or perhaps by someone else and one can do this without having to
make the determination by visual inspection. Note that this command does
not take suffixed arguments.
The task of rearranging sentences within a paragraph or of moving
sentences from one paragraph to another is simplified by the use of the
following commands.
⊗XSJFILL The ⊗XSJFILL and ⊗XSJUST commands separate all sentences
and in the specified text so that they all start with the
⊗XSJUST non-crown indent, and then the individual lines are
⊗XJFILLed or ⊗XJUSTified. As a consequence paragraphing
information as shown by an indent is lost but blank lines
are preserved. These commands will accept suffixed
arguments which are stored as sticky parameters prior to
the execution of the command and which then apply to
future uses of these commands or of the normal ⊗XJFILL and
⊗XJUST commands.
MARGIN CONTROL commands: ⊗XALIGN ⊗XINDENT ⊗→ ⊗← ⊗XCENTER
(See p. 16 for ⊗XJUST, ⊗XJFILL, ⊗XJGET, ⊗XSJUST and ⊗SJFILL)
These commands preserve the identity of the text lines while
preforming certain operations on their left margins.
⊗XALIGN moves all lines defined by the location of the arrow line and
a prefixed argument (with 1 line or the entire ATTACH buffer as the
default option) so that all lines start with a specified (or default)
indentation. The command uses initial TABs to the extent possible. The
command can take a single suffixed decimal (sticky) argument to specify
the desired indentation. The initial default value is set at 0.
The command ⊗XALIGN may be set to operate in one of two different
modes with respect to the treatmant of interior TABs. The initial
default mode is for all interior TABs to be replaced by the equivalent
number of spaces that they produced before the alignment was effected.
The other mode is entered by typing the letter T (for TAB) as a suffixed
letter (after the command name and separated from it by a space). This
mode leaves all interior TABs untouched. The mode as so changed is
sticky and applies for all subsequent ALIGN and INDENT commands. The
initial default mode may be restored by typing the letter S (for
spaces).
INDENT simply moves the specified number of lines (default value of
1) except when in the ATTACH mode when it is the entire ATTACH BUFFER)
to the right or left by the specified amount independent of their
original starting positions. This permits blocks of code to be moved
right or left while preserving their original relative indentations.
INDENT will takes one suffixed numerical argument specifying the desired
indentation, (a positive number if to the right or a negative number if
to the left). Motion to the left is limited by the edge of the page but
there is no practical limit to the motion to the right so take care when
changing the indent value. The initial default indent value is 4.
The command ⊗XINDENT may be set to operate in one of two different
modes with respect to the treatmant of interior TABs. The initial
default mode is for all interior TABs to be replaced by the equivalent
number of spaces that they produced before the alignment was effected.
The other mode is entered by typing the letter T (for TAB) as a suffixed
letter (after the command name and separated from it by a space). This
mode leaves all interior TABs untouched. The mode as so changed is
sticky and applies for all subsequent ALIGN and INDENT commands. The
initial default mode may be restored by typing the letter S (for
spaces).
The commands ⊗→ and ⊗← are special cases of INDENT. They move the
specified lines to the right or left by the (absolute) amount that had
been set previously by the ⊗XINDENT command. The default number of
lines is one if not in ATTACH mode or it is the entire ATTACH buffer,
and the initial default indentation is 4. Unlike ⊗XINDENT, these arrow
commands do not require a ⊗X or a carriage return. Like ⊗XINDENT they
limit the text motion to the left edge of the page. These commands do
not take suffixed arguments.
Typical commands.
⊗XALIGN<cr> ALIGN the earrow line (or entire ATTACH buffer if in
ATTACH mode) with all lines moved to start with the
default ALIGN indentation (originally set to 0).
⊗4⊗XALIGN 5<cr> ALIGN 4 lines starting with the arrow line (or with the
start of the ATTACH buffer if in ATTACH mode) so that they
are indented by 5.
⊗XINDENT<cr> INDENT the arrow line (or the entire ATTACH buffer if in
the ATTACH mode) by the default value (set to 4
initially), but do not let any line move far enough to the
left to lose any non-space characters.
⊗8⊗XINDENT 3<cr> INDENT 8 lines starting with CURRENT by 3, that is, move
the 8 lines to the right by 8 positions, with the new
default value being set to 3.
⊗6⊗XIND T 3<cr> INDENT 6 lines, starting with the arrow line, by 3 after
changing the mode so that interior TABs are kept as TABs.
⊗6⊗XINDENT -3<cr> INDENT 6 lines starting with CURRENT by -3, (that is
move them to the left by 3 positions).
⊗→ Move the CURRENT line or the ATTACH buffer contents to the
right by the previously established amount.
⊗← Move the CURRENT line or the ATTACH buffer contents to the
left by the previously established amount.
⊗6⊗→ Move 6 lines starting with the CURRENT line or with the
start of the ATTACH buffer to the right by the previously
established amount.
⊗XCENTER centers all lines defined by the location of the arrow line
and a prefixed argument (with 1 line or the entire ATTACH buffer as the
default option) so that all lines are individually centered between the
left and right margins as previously specified for the ⊗XJUST or ⊗XJFILL
commands, or desired values may be typed with the center command itself
and these new values will then be the default values for the ⊗XJUST and
⊗XJFILL commands. See these other commands for full details.
The command uses initial TABs to the extent possible. Interior TABs
are replaced by spaces before the centering is effected.
Commands for tabular material: ⊗XTABLE ⊗XTJFILL ⊗XTJUST ⊗XTJGET
Four new commands have been added that permit one to handle tabular
material in a manner analogous to way in which normal text can be treated.
These commands take switches just as do the normal justification commands.
Two types of commands are provided to take care of the two classes of
input data that are most apt to be encountered, these being:
A) Tabular material that is in proper columnar alignment but that may have
missing entries.
The ⊗XTABLE command is intended for use with such material.
B) Tabular material that may not be in proper columnar alignment, but
where the entries are separated by at least 2 spaces or by TABs.
There may also be normal text associated with each tabular line which
is to be justified. Of course, in this case there can be no missing
entries.
The ⊗XTJFILL and ⊗XTJUST commands are intended for use under these
conditions.
These new Tabular commands require the specification of additional
values in addition to the P,L,R,B values specified with the ⊗XJUST and
⊗XJFILL commands. Of course, just as for these older commands, default
values may be used and only those values that are to be changed need to
be specified. Switches and margins are specified as usual (with some
restrictions which will be described later).
When new tabular-field values are to be typed, these must start with
a semicolon ";" and they are to be separated by commas. Values not
otherwise marked are taken to be field lengths, that is the string
;5,8,9<CR> is taken to mean that there are to be three columns the first
one starting with an indent as specified by the P value and with a field
length of 5 character positions, this is to be followed by a second
field of 8 character positions, then one with a field length of 9.
These values supercede the field lengths that had previously been
specified for the first three fields and if still additional fields had
been specified these are to be retained and shifted to the right or left
as may be required because of the changes to the first three fields.
When specifying changes in fields, it is only necessary to type
numbers for those fields that are to be changed and to indicate
preceding fields by commas. Fields after those typed are retained
unless the typed-in string is followed by the letter Z (for zero).
Should there be more fields specified for output than are specified for
input, E warns the user at the time of execution of the TABLE or TJ
command and ignores the extra fields; should there be fewer output
fields than input fields, the command is aborted.
When several fields are to have the same length these fields may be
specified by the use of the @ sign, thus 9@5,7 means that there are to
be 9 fields of length 5 followed by a field of length 7. Fields to the
left of a field that is to be changed may be indicated that are to be
left the skipped by the use of commas without numbers, thus ,,7 means
leave the first two columns unchanged and make the next one with a
length of 7. Similarly 4@0,3@5 means leave the first 4 columns
unchanged and make the next 3 columns with lengths of 5. Note that
zero, in this case, does not mean a column of zero length but means no
change.
Fields must have widths of 3 or more to permit a single character and
to allow for there to be two spaces between the characters in different
columns. Should any particular entry be too long for the width
specified, the next entry is automatically moved to the right so as to
preserve the desired separation between columns. Such excesses may
propagate.
Since the N switch has little meaning for ⊗XTJ commands the default
switch for these commands is the G switch. Care must be taken to see
that the arrow line is properly located with respect to the text when
this command is given as it is much less easy to correct erroniously
assigned input conditions for tabular material than it is for ordinary
textual material. Please see the explanation of the switches on page 16
before attempting to use any of the ⊗XTJ commands.
A fourth command ⊗XTJGET has been provided to perform the same
function for tabular material that is performed for ordinary text by the
⊗XJGET command. It should be noted that this command must determine the
positions of each column as well as the left margins and so it must be
given when the designated text is restricted to start with a tabular
line in which there are no missing entries.
Note: The ⊗XTGET command does the same thing as ⊗XTJGET.
The specifications for these new tabular commands will be listed below.
⊗XTABLE
This command must be given either 1) with the G switch (see below)
operative, 2) after a prior execution of the ⊗XTJGET command and then
with the R switch operative, or 3) after a properly executed command or
set of commands as specified by 1 or 2, as just described, and then with
the A switch operative. In effect, one must provide E with information
as to the existing state of the input textual material since there does
not exist any "Normal" set of conditions that can be assumed. While, in
principle, it is possible to provide this information by typing it in,
it is thought that this task can best be handled by E.
Information regarding the desired new format must also be provided
and this will usually be done by typing the needed information as a
suffixed string as described below. This information is sticky and it
need not be retyped. If there exists a sample of tabular material that
is already in the desired format even this second task may be left to E
by again using the ⊗XTJGET command as explained below. Note that the
⊗XTJGET command changes the parameters as they relate to the conditions
to be established, while the G switch changes the parameters relating to
the input text.
This command will accept a prefix argument defining the number of
lines to be processed and a series of suffixed arguments similar in
every respect to the syntax used with ⊗XFILL and ⊗XJUST. One enters
information as to the desired tabular fields by then typing a semicolon
";" followed by a series of decimal numbers which define the field
lengths to be used. If several fields are to be all the same length the
syntax, 5@7 for example, may be used meaning in this case that there are
to be 5 fields of 7 characters positions each. Alternately it is
possible to define a field in terms of the last colmnar position that it
is to occupy by prefacing the number with an exclamation mark "!". Note
that it is not possible to specify the starting column as this is set by
the cumulative lengths of the preceding fields.
For example, the command αβ7αβXTAble 4;10,6@5,!60<CR> would specify
that there be 8 fields with the first one occupying 10 columns starting
at an indent of 4 then there are to be 6 fields each occuping 7 columns
and a final field ending at column 60. The starting indent for this
last field is obtainable by adding up the columns already accounted for
(44) and so the last field is to be 16 columns wide. Note that it is
only necessary to type a single number before the semicolon as this
commands starts all lines with the crown or new paragraph indent. The
normal left margin indent is not used and the program automatically
determines the right margin value from the accumulated column count.
This command requires information as to the existing format of the
data to be reformatted and information as to the desired new format.
The old format can most easily be obtained by using the G switch with
the command. The new format imformation can then be typed in with the
⊗XTABLE command or it my also be obtained from an existing table (or
portion of a table) that is already in the desired format by using the
⊗XTJGET command.
⊗XTJFILL and ⊗XTJUST
As mentioned earlier these commands are for use with tabular data
that have no missing entries but do have with them some associated text
that one wants justified. The listings of commands with explanations,
as used in this manual is an example of such material. The original
material need not be aligned into columns.
The methods for specifying the various parameters is similar in all
respects to that described for the ⊗XTABLE command. Especial care must
be used in establishing these parameters particularly as regards the
number of fields. The signal for a new field is taken to be the
presence of 2 or more spaces between entries (3 spaces if the entry ends
with a sentence-terminating punctuation mark) and if the textual
material has already been justified and padded there may be cases where
these conditions are met in the associated textual material. The
program differentiates between these entirely on the basis of the number
of tabular entries that are expected and that have been found.
CAUTION: It is unwise to use ⊗XTJUST on text that one may want to
re-⊗XTJUST or ⊗XTJFILL later, since any additional spaces at word breaks
which the first ⊗XTJUST introduces will be taken as a tabular field
indicators during the execution of the subsequent commands.
⊗XTJGET
A new command ⊗XTJGET IS also available to determine the margin
values of a designated portion of text in a manner similar to that
discribed for the G switch above but it causes these data to be store as
the margin values that will be used for subsequent ⊗XJUST or ⊗XJFILL
commands.
Other EXTENDED commands: ⊗X<cmd>
Certain commands are potentially too dangerous to be safely evoked by
a single character. There are also more commands than can be obtained
with single characters. These contingencies are handled by the EXTEND
command specified as follows:
⊗X Accept the string which follows as a command. This
string may be abbreviated as long as no ambiguity
results. The string must be terminated by a space
if parameters are required, or by a <cr> or some
other delimiter.
EXTENDED commands (usually ended with carriage return):
⊗XCONTROL This causes the next character to have only the
bucky bit CONTROL. This is useful on a non-display
when you want to use a command that does different
things depending on which bucky bits (of META and
CONTROL) are given with the command.
⊗XMETACONTROL This causes the next character to have both bucky
bits META and CONTROL. This is useful on a
non-display when you want to use a command that
does different things depending on which bucky bits
(of META and CONTROL) are given with the command.
⊗XALIAS <project>,<programmer>
This command can be used to change your alias PPN.
It takes a following text argument in exactly the
same form as the system ALIAS command: 1) PRJ to
set project to PRJ and programmer to logged in
name, 2) PRJ, to set project to PRJ and retain
previous alias programmer name, and 3) PRJ,PRG to
set both project and programmer. Note that this
command cannot be abbreviated beyond ALIA. This
command types out your new ALIAS on both the
current piece of paper and PP 0 so that you will
see your changed alias when you exit.
⊗XAPPEND<cr> Read in an additional page after the current one so
that the two may be edited together. The arrow may
be moved up and down on the combined pages freely
and the αP command (with an argument if desired)
may be used to switch between the in-core pages,
without affecting the APPEND status. αβP commands
will, however, release all pages except the one
specified. The ⊗XCANCEL command (below) cancels
all corrections on all of the in-core pages and
releases all pages except the first.
⊗XAUTOBURP This command can be used to set or read the
threshold number of records of nulls for
autoburping. If no numeric arg is given, E will
simply type out the current threshold. A positive
arg to this command sets the threshold to that many
records. A zero or negative arg disables
autoburping entirely. An arg of just "+" sets the
threshold to its default value, which is currently
19. (A page to be written out that has the
threshold number of records of nulls, or more, will
be automatically burped to delete all records of
nulls from that page.)
⊗XBACKGO Go back to the last page referenced just before
or ⊗O the one now being viewed.
⊗XBEEP Beep me now. This may be typed ahead whenever
desired and you will be beeped when this
command is reached.
⊗XBURP<cr> Write out the current page and in the process reduce
the disk space for that page to a minimum by deleting
any all-null records from the current page.
⊗XCANCEL<cr> Do not write out the current page but instead
reread it in from the disk. See under ⊗XAPPEND
above the treatment of appended pages. See
p. 8 for the effect ⊗XCANCEL has on line marks.
⊗XCLOSE<cr> Close the file. This allows others to read it
if you had modified it.
⊗XDDT<cr> Branch to RAID if it is present. αP returns.
⊗XDELETE<cr> Delete the page mark between this page and the next.
Note that using this command just after a ⊗XMARK
command does not undo the newly inserted mark
but it does delete the next mark.
⊗XDRAW<cr> Redraw the complete screen. Used when unwanted
marks show on the screen from whatever cause.
(This does the same thing as ⊗V).
⊗XFIND See p. 13 for details on FIND.
⊗XGORPG<cr> Exit from E and repeat the last RPG command.
⊗#⊗XHEIGHT Set the number of lines of display to be used to
the decimal argument given (#). There is a minimum of
10 lines. The maximum is terminal dependent.
⊗XHEIGHT without an argument will reset the display
size to the normal height. (This command is
especially useful on IIIs to reduce flicker.)
⊗XJUST<cr> Justify the current page (or the ATTACH buffer
if in ATTACH mode) using the default values for
the paragraph, left and right margins. Margins
are initially set to 1,1,69. For elaborations on
this basic command, see p. 16.
⊗XLINCNT Type out (1) the number of the current line, (2)
the number of lines on the current page, (3) the
number of columns in the current line, (4) the
number of characters on the page, (5) the current
page number, and (6) the number of lines attached,
if any.
⊗XMAIL <destinations and switches><cr>
or
⊗XSEND <destinations and switches><cr>
or
⊗XREMIND <destinations and switches><cr>
Execute a system MAIL, SEND or REMIND command using
text from the current page or attach buffer. If a
numeric arg is given with any of these commands,
only that many lines of text are included in the
message. If a zero arg is used, a one-line message
can be sent entirely from the ⊗X-command line (no
text from page or attach buffer sent). To do this,
you MUST separate the message text on the command
line from the command itself with a FORMFEED. For
example, ⊗0⊗XSEND ME<ff>Hey, it really works!<cr>
will send ME the message "Hey, it really works!" A
formfeed in the command line can also be used to
include a subject or an initial text line ahead of
the message text being output from the page (or
attach buffer). That is, ⊗!⊗XMAIL/SUBJECT
PRG<ff>Sending mail from E<cr> will mail the
current paragraph to PRG with the subject "Sending
mail from E".
These commands are executed by starting up another
job running the MAIL program. When that job
finishes, it will type out a message on your
terminal reporting the success or failure of the
command. Detailed information on failure is not
given. See Appendix 4 in the Monitor Command
Manual for full details on the form of switches and
destinations for these commands.
⊗XMARK<cr> Insert a page mark between the CURRENT line and
the line above it and display the new page.
If there is an attachment when this command is
given, the attachment will be set down at the top
of the newly created page.
Note that this command name may be shortened to M
but not to MA.
⊗XNDFAIL<cr> Insert a new first line listing all labels that appear
on the current page in appropiate FAIL format for a
directory listing. See page 31 for full details.
⊗XNDSAIL<cr> Insert a new first line listing words that follow certain
catagory words (default catagories are RECORD!CLASS,
RECORD_CLASS and PROCEDURE) on the current page in
appropriate SAIL format for a directory listing. See
page 31 for full details.
If more than one
page is in core (by the use of the ⊗XAPPEND or β<ff>
commands), then the new line will contain the labels
from all such pages, and it will appear at the start
of the first in-core page.
⊗XPROTECT<cr> Display the protection key for the file
being edited.
⊗XPROTECT 111<cr> Change the protection of the file being
edited to the octal value that is typed (in this
case to 111, coresponding to write protection
against all users). Only 3 octal numbers may be
given. An attempt to change the protection of a
file that is protection protected againt the user
will not work.
⊗XREADONLY<cr> Inhibit any further writing of the file. You
can leave readonly mode with the ⊗XREADWRITE
command (if the file is formatted). If you try
to write out a changed page while you are in
readonly mode in a formatted file, E will
demand that you respecify the mode (readonly or
readwrite) that you want. If you choose
readwrite, the changed page will be written
out.
⊗XREADWRITE<cr> Enable writing (modifying) the file. The
file must be formatted for this command to
work. However, if you are editing a one-page
unformatted file, this command will still work
by changing you to /N mode (no directory on the
disk).
⊗XSPOOL These commands spool on the line printer and XGP,
and respectively, the current page, or the ATTACH
⊗XXSPOOL buffer if something is attached, without writing it
out in the current disk file. If a numeric arg is
given for either of these commands, only that many
lines of text are spooled (they are spooled from
the attach buffer if anything is attached). This
allows you to spool a copy of changes that you have
made whether or not you intend to incorporate them
into the disk copy of the file that is being
edited. The spooled copy carries the same header
information as it would have carried had it been
spooled in the usual way. For spooling on the XGP
(⊗XXSPOOL command), the default font and page
margins are used.
⊗XSIN(cr) Put Spaces IN, in place of TABS, for example, so
that the actual spacings will be preserved when
extra characters are added ahead of TABs. This
command may take a prefixed argument specifying
the number of lines to be operated on. Without
an argument it is applied to the entire page or
to the entire ATTACH buffer.
This command will, of course, increase the space
occupied by the text on the disk. The inverse
command, ⊗XTIN, should be used to replace spaces
by TABs, and then, this should be followed by an
⊗XBURP before saving the page.
SINning without TINning and BUrping is bad.
⊗XTIN<cr> Put Tabs IN, in place of spaces, when this will
result in a net saving in the space occupied by
the text on the disk. Extra spaces and/or TABs
at the end of lines are also deleted. No change
is made in the way the text is displayed. This
command may take a prefixed argument, to specify
the number of lines to be processed. Without an
argument it is applied to the entire page or the
ATTACH buffer. The inverse command is ⊗XSIN!
While this command reduces the number of spaces
used in the text, it does not necessarily reduce
the space that the text will occupy on the disk.
The command ⊗XBURP should be used after the ⊗XTIN
command, for this purpose.
⊗XSAVE Write out the current incore page(s) and any attach
buffer in the file E$SAVE.TXT on your LOGIN disk
area. This is done automatically for almost all
fatal errors detected by E; when it happens as a
result of such an error, a message to that effect
is typed out. (The file E$SAVE.TXT may NOT be
written out successfully if the error is detected
again while writing this file.) Note that any
previous E$SAVE.TXT file is superseded (replaced)
by the new file. Note also that this command (and
its automatic call upon error detection) does NOT
touch the file you currently have open for editing.
⊗TELLME Send a standard "error report" to ALS reporting the
last few commands you have given and some interal E
data. This command should only be used if you
think you have just seen a bug occur in E. This
command provides valuable information for tracking
down possible bugs. If you use this command, you
should shortly afterward mail a message to ALS
explaining what sort of bug you think you just saw.
⊗TMPCOR Write out the TMPCOR file now to remember the
current place in the current file. This is
sometimes useful to remember your place if you did
something funny originally that normally inhibits
use of the TMPCOR file (like, saying "R ERAID;file"
instead of "ETV file").
⊗XWRITTEN Type out the date and time at which the current
file was previously written and the PPN and jobname
of the person who did it. This information is
saved even after you have modified the file, that
is, even after the system has lost this data;
however, once you switch away from a file this data
is lost for that file.
⊗XVERBOSE E can be in any one of three possible report states.
and The reporting state determines how much information
⊗XTERSE E types out a various times. The three states are:
(1) the normal default state, (2) a verbose state
achieved by the command ⊗XVERBOSE and (3) a terse
state achieved by the command ⊗XTERSE. The normal
state can be restored by giving either ⊗-⊗XVERBOSE
or ⊗-⊗XTERSE. You can find out the current state
by giving either ⊗0⊗XVERBOSE or ⊗0⊗XTERSE. The
normal state now does somewhat less reporting (that
is, less typeout) than formerly. No error messages
are ever suppressed by the terse state.
The following remarks are currently suppressed only
in the Terse state.
Only one MARK and you are there!
There are no marks!
Already marked!
Not marked!
All marks have been cleared.
Removing last MARK on this page.
MARKS on this page only have been cleared.
Page is empty. (⊗XNDFAIL, ⊗XNDSAIL cmds)
Aborting macro ... (error occurred in macro)
Abort of # macros requested from ... (⊗#⊗XABORT cmd given)
The following remarks are typed out only in the
Verbose state.
N characters added/removed (justify commands)
Line now has N chars. (join)
You have replaced XXX with YYY (substitute)
(detailed info of the parenthesis commands)
The new line of N chars lists M items (⊗XNDFAIL/SAIL commands)
Calling ... (calling a macro)
Ending ... (a macro has finished)
⊗XEMPTY Move to the next empty or non-empty line. A repeat
and argument will cause these commands to look for that
⊗XNONEMPTY many empty or non-empty lines. A negative arg will
cause the search to go backwards. A positive arg
(or default of 1) will ignore the current line and
search from the next line, but will not cross a
subsequent incore pagemark; hence the search is of
only one page. These commands can also be used,
both inside and outside macros, to tell if the
current line is empty--use a zero arg: ⊗0⊗XEMPTY
is a no-op if the current line is empty, but will
say something and stop any running macro if the
current line is non-empty; ⊗0⊗XNONEMPTY is a no-op
if the current line is non-empty, but will say
something and stop any running macro if the current
line is empty.
⊗XDPYALWAYS<cr> Always re-display text after each command.
⊗XDPYSKIP<cr> Don't re-display text if there are typed-ahead
commands to be executed. (normal mode)
⊗XINSERT<cr> Same as β<form>; insert a page mark line.
⊗XPPSET<cr> Reset screen position of page printer (the three
lines at the bottom of the screen which echo commands).
⊗XQUIT<cr> Exit WITHOUT writing out to the disk any text changes.
All other commands that exit write out any changes first.
⊗<n>⊗XTYPE<cr> Types n lines starting at CURRENT and moves CURRENT
past those lines. Primarily useful from
non-display terminals.
System commands to evoke E and SWITCHES permitted after filenames.
Basic commands
CETV <filename and switches><cr>
Create a new file with the name and extension as
specified by the filename. The file will contain a
directory page (unless /N appears among the switches)
and one blank page.
ETV <filename and switches><cr>
Edit with the specified file with E. If the file has
but one text page, display this, otherwise display the
directory page.
ETV <cr>
Edit with E the most recently edited file starting at
the page and line where the arrow was when E exited
last time. Line marks are restored to the lines that
were marked before.
ETV <filename1>←<filename2><cr>
Copy the file named <filename2> into a new file named
<filename1> and then edit <filename1> with E. If
<filename2> has a valid directory, this command is
executed relatively rapidly; if not, a new directory
will have to be created.
ETV <filename1>→<filename2><cr>
Copy the file named <filename1> into a new file named
<filename2> and then edit <filename1> with E. If
<filename1> doesn't have a valid directory, this
command will not be accepted.
ETV ?<cr>
Edit the E manual file (this one) in readonly mode.
READ <filename><cr>
Edit the specified file in Book mode (/B) and maintain a
.BKP bookmark file. See Book mode on p. 27.
R E;<filename and switches><cr>
Same as ETV <filename and switches> except that no
TMPCOR file is read or written. The TMPCOR file is
normally used to remember the last file you edited and
your place in it, but this command disables use of the
TMPCOR file.
A switch consists of an optional decimal number followed by a single
letter, all either preceded by a slash or inclosed in parentheses. Any
number of switches may follow the filename that the switches are to
modify. For example, here are a couple of equivalent commands.
ET E.ALS/R/7P/2L ET E.ALS(R7P2L)
Switches are NOT ALLOWED in front of a filename. "ET /R FOO" is illegal.
The available switches are listed below.
/C Create a new file with the specified name. This is of
most use when one wishes to create a new file with
the file switching command ⊗ε, perhaps to hold some
attached text from the current file.
/R Open the file in the read-only mode. This is useful
if one wants to examine a file without any danger
of inadvertently modifying it. For example:
ETV TEACH.TXT[UP,DOC]/R<cr>
You can leave read-only mode by using the ⊗XREADWRITE
command. You enter read-only mode with ⊗XREADONLY.
/B Book mode. Edit the file in book mode. In this mode
you are never permitted to alter the file nor are you
permitted to leave this mode. See the explanation of
book mode on p. 27.
/N No Directory. Edit the file without writing a directory
on page one. The directory must be generated from
scratch and the file reformatted each time you edit
the file. The directory is kept in core by E but
never written in the file.
/F Repage and reformat the file with the maximum page size
limited to the default value of 33 (one screenful on
Data Disc terminals). The F may be preceeded by a
decimal argument to use any desired number instead of
33. Old page marks are retained however, so it is not
possible to increase the page size by this switch and
some pages may be shorter than the specified length.
This switch is particularly useful for getting long
unformatted files into a shape where they can be
handled safely and easily.
/F/R Repage and reformat the core version only without
changing the disk copy. The new directory will be on
page 0 and the old directory (if there is one) will be
kept as a part of the text starting on page 1. Do not
try to use the old directory as it is invalid. This
switch combination is particularly useful for
examining (without altering) unformatted files that
have been produced by programs other than E.
/nP Open the file at page n, where n is a decimal number.
/mL Open the file with the arrow at line m (m is decimal).
/E Open the file at the End of the last page.
/nE Open the file at the End of page n (decimal).
/S Open the file at the Same page and line the last file
was open at.
/Q Quietly assume a Yes answer to any questions E would
otherwise ask about having to format or replace an
existing file. Discard any invalid or undesired
directory instead of asking about it.
/x,yM Place a line-mark on page x at line y. Note that this
switch takes two decimal arguments separated by a
comma. See the line marking commands on p. 8.
The infinity character "∞" may be used as the decimal number for a
switch, as in /∞F. It represents a large positive value.
NEED TO REFORMAT FILE, or WOULD YOU SETTLE FOR /R MODE, or FOR /N MODE?
If you try to edit, in readwrite mode, a file that does not have a
valid E directory, E will tell you that the file needs to be reformatted
and will ask if that is ok. If you say Yes (just Y), then E will format
the file and add a directory page at the beginning of the file. If you
say No (just N), E will give you some alternatives. These include
editing the file in readonly mode (/R) (for which E does not need a
formatted file) and editing the file in no-directory mode (/N) (for
which E will have to format the file so that each page begins on a
record boundary, but no directory page will be written at the beginning
of the file). If you say No to each of the alternatives, E will ask for
a new filename. If you type <altmode> in place of Y or N for any
alternative, E will forego the remaining alternatives and immediately
let you give a new filename.
To any of the Yes or No questions about formatting, you can respond
/R to tell E to edit the file in Readonly mode, or you can respond /N to
tell E to edit the file in No-directory mode. Like the normal responses
(Y or N), the special responses /R and /R do NOT take a carriage return.
Using E from a TTY (non-display).
It is possible to use E from a non-display terminal. Of course,
some of the advantages of E over say SOS are lost but one may
not want to go to the trouble of having switching editors in
mid-stream. As partial compensation for the lack of display
features, E provides the TTY user with line numbers. The lack
of CONTROL and META bits does introduce certain operating
difficulties. See the MONITOR COMMAND MANUAL sections 3 and 4.7
for other information of interest to TTY users.
No special action is required of the TTY user to tell E that a
TTY is being used. This happens automatically when E is
started.
The mode distinction which has been referred to previously is
much more distinct when operation from a TTY. There are two
main modes. Initially, all characters typed to E from a TTY are
assumed to be commands, that is the character is read by E as if
it had been typed with both CONTROL and META keys depressed.
One can, however, enter an INSERT mode by typing the character I
and then everything thereafter (with the exception of certain
preempted control signals) is accepted as text.
The ALT or ESC key is the escape key (octal 175) which returns
one to the COMMAND mode. Because of this usage, the use of ALT
to abort certain E commands is seriously impeded.
One is denied the use of the LINE-EDITOR features so that the
only way to alter an existing line is to delete it and type it
in from scratch.
On most no-display terminals, it is not possible to send
commands that require a single Stanford-keyboard control key
(either the CONTROL or the META key only) as contrasted with
those that permit either the CONTROL only or both CONTROL and
META keys.
The control key on the TTY is not at all the same as the
Stanford-keyboard CONTROL key referenced in most of this manual.
Some teletype control characters are part of the extended
character set at Stanford and can thus be typed (see the
complete list at the end of this page).
Some characters cannot be sent at all; their use has been
preempted by the system. When these characters exist in
previously prepared text they will print as shown by the list
below. Note that the form in which they print will depend upon
the terminal that you are using to read the text; an LPT or XGP
output will, of course, be in the Stanford extended character
set. Most terminals use two characters, the first usually being
an up-arrow.
Stanford characters that cannot be sent as text or as E control
characters are:
Octal Usual Prints Typed Preempted as a system
name out as in as command used for
002 alpha α <ctr>B type-out pause (toggles)
003 beta β <ctr>C monitor call
017 delta ∂ <ctr>O flush type-out (toggles)
025 there exists ∃ <ctr>U flush type-in
032 tilde ~ <ctr>Z end of file
033 not equal ≠ <ctr>[ altmode
Character equivalences
Code Name Prints Typed Preempted
octal out as in as for
000 null
001 down arrow ↓ <ctr>A
002 alpha α <ctr>B type-out pause (toggles)
003 beta β <ctr>C monitor call
004 logical and ∧ <ctr>D
005 logical not ¬ <ctr>E
006 epsilon ε <ctr>F
007 pi π <ctr>G
010 lambda λ <ctr>H
011 TAB
012 LF
013 VT
014 FF
015 CR
016 infinity ∞ <ctr>N
017 delta ∂ <ctr>O flush type-out (toggles)
020 containment ⊂ <ctr>P
021 implication ⊃ <ctr>Q
022 intersection ∩ <ctr>R
023 union ∪ <ctr>S
024 for all ∀ <ctr>T
025 there exists ∃ <ctr>U flush type-in
026 circle times ⊗ <ctr>V
027 double-arrow ↔ <ctr>W
030 underbar _ <ctr>X
031 right-arrow → <ctr>Y
032 tilde ~ <ctr>Z end of file
033 not equal ≠ <ctr>[ altmode
034 less or equal ≤ <ctr>\
035 greater or eq ≥ <ctr>]
036 equivalence ≡ <ctr>↑
037 logical or ∨ <ctr>←
040 SP
041 exclamation ! !
042 double quote " "
043 number sign # #
044 dollar sign $ $
045 percent % %
046 ampersand & &
047 close s. quote ' '
050 left paren ( (
051 right paren ) )
052 asterisk * *
053 plus + +
054 comma , ,
055 minus - -
056 point . .
057 slash / /
060 digits 0 0
...
071 9 9
072 colon : :
073 semicolon ; ;
074 left broket < <
075 equal = =
076 right broket > >
077 question mark ? ?
100 at sign @ @
101 upper-case A A
...
132 Z Z
133 left bracket [ [
134 back slash \ \
135 right bracket ] ]
136 up¬arrow ↑ ↑
137 left-arrow ← ←
140 open s. quote ` `
141 lower case a a
...
172 z z
173 left brace { {
174 vertical bar | |
175 ALT ALT or ESC
176 right brace } }
177 BS or DEL BS or DEL
PARENTHESIS finding/matching commands: ⊗( ⊗) ⊗XLPAREN ⊗XRPAREN ⊗↔ ⊗XPAREN ⊗XPINFO
This set of commands allows one to check nested sets of bracketing
symbols for matching pairs and for related properties. The search may
be restricted to the current page by using the ( and ) forms or it may
be extended over the rest of the file by the extended commands ⊗XLPAREN
and ⊗XRPAREN. It always starts from the location of the cursor at the
time the command is given and proceeds in the forward direction. The
nesting level is re-assigned the value 0 at the cursor's current
position for each new command (see special conventions below).
The default symbols are the normal parentheses ( and ). An EXTEND
command ⊗XPAREN allows one to define any desired set. The command
itself must be delimited by a space and followed by the desired two
characters and a carriage return. If the desired pair is from the set
→←, ⊂⊃, `', ≤≥, {}, <>, [], then only the first of the set and a
carriage return should be typed. If another set had been chosen the
default set may be reset by typing the setting command with a carriage
return only.
Note, that a space is an acceptable symbol and for this reason extra
spaces are not permitted in the command string. A distinction is also
made between upper and lower case characters so that both may be used.
In the special case when the same character is assigned to both symbols,
the concept of nesting has no meaning and the commands are interpreted
differently, as noted in the special section below.
In what follows, the two symbols of the chosen set will be referred
to as the left-symbol and the right-symbol respectively.
The normal commands are then ⊗( and ⊗). Each of these may take an
argument which specifies the sought-for nesting level for the region
defined by the bracketing symbol. The default argument is 1 for both
commands. The corresponding extend commands are ⊗XLPAREN and ⊗XRPAREN.
These commands may be given both when not in the line editor and when in
the line editor. If given when in the line editor the line will not be
written out should the search be unsuccessful or should the search be
successful with the found symbol in the same line. A successful search
that results in leaving the line editor to go to another line will cause
the original line-editor contents to be written.
There is one additional command ⊗↔ which, in effect, un-does the last
⊗(, ⊗), ⊗XLPAREN, ⊗XRPAREN or ⊗↔ command and returns the cursor to its
former position.
Note that the most frequent use of these command will be in LISP
where one wants to find matching parentheses, and hence the use
of ( and ) for the commands and for the default symbols.
SAIL users may find it useful to define an otherwise unused set
of symbols to mean BEGIN and END (some people already use ⊂ and
⊃ for this purpose), and to use these symbols in their stead, at
least while debugging.
Special conventions
A special convention has been adopted to avoid ambiguity for those cases
in which these commands are given while the line-editor cursor is under
one of the searched-for bracketing symbols. This convention is that a
cursor under a left-symbol is presumed to be actually to its left, that
is, outside of the symbol (as it appears) and a cursor under a
right-symbol is presumed to be actually to its right, again outside of
the symbol (and again as it appears).
Arguments, when used with these commands refer to the desired nesting
level within the region defined by the nesting pairs. If no argument is
given, the default value is 1, in accordance with the usual convention
for most E commands. As a mnemonic aid, the sought-for symbol is
reported with the argument shown after left-symbols and before
right-eymbols although the argument must always be typed before the
command (to permit the command character, itself, to be used as the
activator).
By convention the starting level is always re-assigned the value 0.
Left-symbols increase the nesting level and right-symbols decrease the
level.
Typical commands
⊗4⊗( Move the cursor to that left-symbol which would cause the
nesting to reach a level of 4, considering the present cursor position
to be at level 0. Do not move the cursor if this level is not found and
report the deficiency. This request is reported as (4 for the reasons
noted above.
⊗( With no argument, this command finds the very first left-symbol.
If the cursor is already at a left-symbol this command is a NO-OP. This
is in consequence of the convention that a cursor under a left-symbol
actually refers to the situation just ahead of the symbol.
⊗XLPAREN This is the same as ⊗( except that the search is permitted to
continue past the end of the current incore page(s).
⊗) If the cursor is already positioned under a left-symbol, move
the cursor to the matching right-symbol. If the cursor is not under a
left-symbol, then search for that right-symbol that returns returns the
nesting level to its initial value of 0. Should the cursor be under a
right-symbol, the initial level is taken to be that at its right. Note
that this command is a NO-OP only for the case where the desired level
cannot be found. This request is reported as 1).
If the end of the text is reached before a transition from level 1 to
level 0 is found, the cursor is left in its original position and the
deficiency is reported along with the other data. Deficiencies, in this
case can be of two sorts, either a level of 1 is never reached or having
been reached and possibly exceeded as a result of left-symbols, a
right-symbol is never encountered while at this level. In the first
case, the deficiency figure is reported following a down arrow (meaning
always below).
⊗XRPAREN This is the same as ⊗) except that the search is permitted to
continue past the end of the current incore page(s).
⊗3⊗) Search through the text as just described but stop at the first
right-symbol that reduces the nesting-level from the specified level, in
this case 3. This request is reported as 3).
Interpretation when the same character is used for both symbols:
Both the ( and the ) command, in this case, ignore the symbol that is
above the cursor at the time the command is given and search for the Nth
next example of the specified symbol, where N is the argument that is
used with the command. The ( command is not a NO-OP in this special
case.
INFORMATION ABOUT PARENTHESIS SEARCHES
In the Terse or normal reporting states, E does not type out all the
possible information when a parenthesis search is done. To find out
all this information, use the following command, or be in Verbose
mode when the search is done.
⊗XPINFO Type out information about the last parenthesis
search done.
Swapping To and From E via RPG startups: ⊗XRSYS ⊗XRUN ⊗XGORPG ⊗XDRD ⊗XTV
A user program can start up E and have it automatically edit a
particular file at a specific place, with the capability of returning to
the original program or to any other particular program. Furthermore, E
has commands that cause it to swap to certain system programs or to any
named system or user program.
In each of these cases, whether coming from E or going to E, the new
program is started up at the so-called "RPG startup address", namely, at
1 beyond the normal starting address. This is usually done with the
SWAP UUO by specifying a starting-address increment of 1.
The commands to start up another program from E are listed below.
Each of these first puts down any attach buffer and writes out to the
disk any changes on the page before swapping to another program.
⊗XRSYS <program> This runs the given system program (device SYS:)
with an RPG startup. See also next paragraph.
⊗XRUN <program> This runs the given user program (device DSK:)
with an RPG startup. See also next paragraph.
⊗XGORPG This runs the system program SNAIL (formerly RPG)
with an RPG startup.
⊗XDRD Either of these runs the system program DIRED
or with an RPG startup.
⊗XDIRED
⊗XTV Runs the system program TV with an RPG startup
to edit the current file with TV (ugh!).
If the <program> is omitted from the ⊗XRSYS or ⊗XRUN command, and if E was
originally run with an RPG startup, then the program run by the command
will be the program whose name was in ACs 0-3 when E was started up (see
below for the AC contents expected by E on an RPG startup). Thus a
program that wishes to swap to E and to have E swap back to it can set up
the ACs as described below and swap to E using the RPG startup (starting
address plus 1).
When E is run via an RPG startup, it expects certain data to be in the ACs
(placed there before the SWAP was done). When E starts up another program
via the ⊗XRSYS or ⊗XRUN command, it leaves this same data in the ACs.
This data is listed in the table below. (RH means "right half" of the
AC, and LH means "left half".)
AC Data in AC upon RPG startup (starting address + 1)
0 Name of program file
1 LH Extension of program file
2
3 PPN of program file
4
5
6 Device of program file
7
10
11 PPN of edit file
12
13 LH Extension of edit file
RH Mode bits (see below)
14 Name of edit file
15 LH Attached-line count+400000, or column position within line, or zero
RH Line number in edit file
16 Page number in edit file
17
Coming from E (⊗XRSYS or ⊗XRUN), ACs 0-6 will contain the name of the
program that E is swapping to, and ACs 11-16 will contain the name of the
edit file that was being edited by E.
In swapping to E, ACs 0-6 contain the name of the program that E should
swap back to upon an ⊗XRSYS or ⊗XRUN command given without a program name,
and ACs 11-16 contain the name of the file E should edit. If AC 14 (name
of edit file) contains zero, E will read the name and starting page and
line of the edit file from the normal editor TMPCOR file (ED), and the
TMPCOR file will be updated upon exit. Otherwise, the TMPCOR file is
neither read nor written for an RPG startup.
The mode bits in the right half of AC 13 are:
Bit Octal Meaning
18 400000 Create this file.
19 200000 Edit in readonly mode (/R).
20 100000 Edit in no-directory mode (/N).
Message and paragraph handling commands: ⊗∂<cmd> ⊗0⊗∂ ⊗!<cmd> ⊗0⊗!
MESSAGE HANDLING COMMAND: ⊗∂
The new partial-sign (∂) command is designed for easy handling of
messages in mail files, but it can be used on any file regardless of
whether the file contains mail-like messages. For instance, this
command is capable of attaching (or deleting) a whole page of text at
once and simultaneously deleting the pagemark for that page.
The ⊗∂ command is a search command used to find the beginnings of
"messages." A message is defined as the largest contiguous set of
lines of which only the first starts with a partial-sign (∂) and the
last of which is followed either by another line starting with
partial-sign or by the end of the page. The current message is
defined as the message containing the current line (the arrow line).
If the arrow is on the row of stars that marks the end of the page,
then the current message is the one that contains the last real line
of the page.
Messages are never considered to extend across page boundaries. If
neither the current line nor any of the lines preceding it on the
current page starts with a partial-sign, then the current "message"
starts with the first line of the current page. If none of the lines
(on the current page) below the current line starts with a
partial-sign, then the last line of the current "message" is the last
line on the page. Thus, if there are no lines on the current page
that start with ∂, then the current "message" is the whole page.
Like the ⊗F command, the ⊗∂ command requires a following command
before any action is taken (with one exception, which is noted
below). However, the ⊗∂ command does not accept a search string
before the second command; ⊗∂ always searches for lines beginning
with a partial-sign. If the command following is one of the special
commands that use the number of lines searched (for instance, by the
⊗F command) as the argument to the command, then that command will be
carried out for the entire current message. If the command is not
one of these special ones, then it will be executed at the beginning
of the next message.
Currently the special commands that use the number of lines searched
as the command argument are: αβD (delete), ⊗A (attach), ⊗C (copy),
⊗←, ⊗→, ⊗XALIGN, ⊗XCENTER, ⊗XINDENT, ⊗XJFILL, ⊗XJOIN, ⊗XJUST.
The ⊗∂ command may be preceded by a numeric argument which specifies
the number of messages (starting with the current one) which the
command is to affect. If that number is negative, then the messages
just before the current one are the ones effected, with the absolute
value of the argument specifying how many messages.
N.B.: A zero argument to the ⊗∂ commands means move to the beginning
of the current message WITHOUT WAITING FOR A SECOND COMMAND. This is
the only case where a second command is not used by the ∂⊗ command.
!!!!! SPECIAL FEATURE OF THE PARTIAL-SIGN COMMAND !!!!! N.B.: If the
partial-sign command is used with ⊗A (attach) or αβD (delete) to
attach or delete every line on the current page, then the current
page itself, i.e., its pagemark, will also be deleted. In
particular, if the current page is not the last page in the file,
then the following pagemark will be deleted, leaving you at the top
of that page; if the current page is the last page in the file, then
the preceding pagemark will be deleted and you will be left at the
bottom of the previous page. However, no pagemark deleting will be
done if the file has only one page besides the directory. And note
that the page deleting only happens when the entire page's text is
either deleted or attached using the partial-sign command!
If there are already some lines in the attach buffer at the time you
give an ⊗∂⊗A command, the new messages being attached are added at
the end of the attach buffer. If you give a ⊗-⊗∂⊗A command when
there are already lines in the attach buffer, the new messages being
attached are inserted at the beginning of the attach buffer, ahead of
the text already there.
Here are some example uses of the partial-sign command. The ones
marked with an asterisk (*) all involve either αβD or ⊗A and will
delete a pagemark in addition to the action noted if the action
results in an empty page which is not the only page (besides any
directory) in the file.
⊗∂αβD ;* Deletes the current message.
⊗∂⊗A ;* Attaches the current message.
⊗∂⊗C ;Copies the current message into the attach buffer.
⊗-⊗∂<cr> ;Moves to beginning of previous message.
⊗0⊗∂ ;Moves to beginning of current message.
⊗∂<cr> ;Moves to beginning of next message.
⊗∂<bs> ;Moves to end of current message.
⊗∂⊗J ;Moves to beginning of next message and jumps screen up.
⊗∂αβ<cr> ;Enters line-insert mode between the end of the
;current message and the beginning of the next one.
⊗3⊗∂⊗D ;* Deletes three messages starting with the current one.
⊗3⊗∂⊗A ;* Attaches three messages starting with the current one.
⊗3⊗∂⊗C ;Copies three messages starting with the current one.
⊗-⊗2⊗∂⊗D ;Deletes the two messages preceding the current one.
⊗-⊗2⊗∂⊗A ;Attaches the two messages preceding the current one.
⊗-⊗2⊗∂⊗C ;Copies the two messages preceding the current one.
PARAGRAPH HANDLING COMMAND: ⊗!
The exclamation-point (!) command has been added to operate on
PARAGRAPHS in the same way that the partial-sign (∂) command operates on
messages.
However, UNLIKE the ⊗∂ command, the ⊗! command never deletes a pagemark.
NOTE: "PARAGRAPH" here means a contiguous group of non-empty lines
plus certain surrounding empty lines (if any). Included in the
paragraph of the ! command are: one empty line (if any) at the
beginning of the paragraph and all but one of any empty lines at the
end of the paragraph. However, if the last line of a page is blank,
it is considered part of the paragraph containing the previous line.
The two commands ! and ∂ don't actually do anything until you type
another command. If that following command accepts a search distance
argument, then the effective argument will be the number of lines in the
current paragraph (! command) or message (∂ command); for example,
⊗!⊗XJUST<cr> will justify the current "paragraph". If the command that
follows ⊗! or ⊗∂ does NOT accept a search distance argument, then that
command is carried out after moving to the beginning of the next
paragraph (!) or message (∂). The one case in which the ! and ∂
commands don't take a following command is when a preceding zero
argument has been supplied (that is, ⊗0⊗! or ⊗0⊗∂), in which case the
command immediately moves to the beginning of the current paragraph (!)
or message (∂).
MACROS: ⊗XDEFINE ⊗Z ⊗Y ⊗XRESUME ⊗XABORT ⊗# ⊗XSTOPALL ⊗XSTOPONE ⊗XSTOPZERO ⊗XSTOPHOW
(Additional commands relevant to macros are explained on p. 26.)
DEFINING AND CALLING MACROS--MACRO NAMES
Macros are provided in E to save the user the effort of typing the same
things over and over again. A macro represents any number of characters
that should be "typed" to E as commands and text whenever that macro is
called. A macro is defined with the command
⊗XDEFINE <macro name><cr>
where <macro name> can contain letters and digits (it can even start with
a digit or contain only digits) or it can be entirely blank. Only the
first six characters of a <macro name> are significant, but beyond that a
<macro name> can NEVER be abbreviated. After giving the ⊗XDEFINE command,
the user types the characters (commands and/or text) which the macro is to
represent. The definition is ended by typing αβ<lf> on displays or ↑Z on
non-displays.
A macro can be called either by
⊗Z<macro name><cr>
or
⊗Y
where the latter calls the last macro either defined or called.
Each of these macro-calling commands causes the macro definition to be
expanded by treating the commands and text of the definition as if they
were being typed in by the user. The ⊗Y command allows the user to
repeatedly call the same macro with a single keystroke each time, but
only until the user either calls (with ⊗Z) or defines another macro.
Named macros and the ⊗Z command allow the user to define and use as many
macros as he wants.
When all macro expansion is terminated for any reason, an ALTMODE
character is used as the next input character to force completion of any
partially-typed command. However, there is one major exception to this
rule.
If the macro expansion runs to completion and the effect of the last
characters in the macro is to leave a line of text (from the file) in
the line editor, then the normally-inserted ALTMODE is omitted and the
text is left in the line editor.
While macro expansion is in progress, there are no prompts given (like
"COMMAND?"), "OK" is never typed out, and the display is never updated.
However, the ⊗V command always redraws the screen immediatetly, even
when encountered during macro expansion. Thus you can put ⊗V commands
into your macro definition to let you watch the progress of the macro.
Note that αβV erases the screen and then redisplays, whereas αV just
redisplays the screen (this is true outside of macro expansion as well
as inside).
ITERATIVE AND RECURSIVE MACRO EXPANSION
Iteration: A positive repeat argument on a macro call will cause the
macro to be expanded a number of times. For example,
⊗3⊗Z<macro name><cr>
or
⊗3⊗Y
will cause the macro to be expanded three times. Negative arguments to
macro calls are reserved for future use, although they currently result
in making a macro call a no-op. A zero argument will cause the macro
name and definition to be typed out, as explained below.
Recursion: A macro can call other macros or even itself. When a called
macro finishes, control returns to the calling macro, which then
continues its own expansion. A pushdown stack is used to keep track of
the macro calls (expansions) currently in progress. This macro stack
currently has a length of about 24, thus allowing nested macro calls up
to that depth.
FINDING OUT MACRO NAMES AND DEFINITIONS--STANDARD REPRESENTATION OF DEFINITIONS
Arguments of zero are used to have macros and their definitions typed
out. The command
⊗0⊗XDEFINE<cr>
will type out the names of all defined macros. A zero argument to a
macro call will simply cause the macro's name and definition to be typed
out; that is, use
⊗0⊗Z<macro name><cr>
or
⊗0⊗Y
with the second form also being useful for finding out which macro the
next ⊗Y command would call.
Macro definitions are always typed out using a text representation which
allows for the CONTROL and META bits and non-printing characters (such
as formfeed). This same representation is used when reading or writing
macro definitions from or to the incore page and command files--see p. 26
for those commands.
Actually, there are two representations available, the standard
representation and the alternate representation. The standard version
is always used for typing out definitions, but either or both can be
used when reading definitions from the incore page or from a command
file. These representations involve three special escape characters and
several ignored characters. The characters ignored are
TAB,ALT,CR,LF,BS,VT, and FF.
The three escape characters are
"⊗", "α" and "β".
To represent any of the seven ignored characters or any of the three
escape characters, two characters are used, namely, the character "⊗"
(circle-x) followed by a character specifying which special character
you want. These representations are listed in the table below.
The character alpha (α) causes the next command to have the CONTROL bit
added. The character beta (β) causes the next command to have the META
bit added. Thus "αβV" represents CONTROL-META-V.
Representations Corresponding commands to E
Standard Alternate
⊗⊗ ⊗⊗ ⊗ circle-x
⊗= ⊗T TAB horizontal tab
⊗≠ ⊗A ALT altmode
⊗↔ ⊗C CR carriage return
⊗↓ ⊗L LF linefeed
⊗↑ ⊗B BS backspace
⊗← ⊗V VT vertical tab
⊗→ ⊗F FF formfeed
⊗α ⊗X α alpha
⊗β ⊗Y β beta
α ⊗1 Add CONTROL bit to next command
β ⊗2 Add META bit to next command
For example, CONTROL-META-LINEFEED is represented by "αβ⊗↓" or "αβ⊗L" or
"αβ⊗l". The case of a letter following "⊗" is irrelevant, but
otherwise, if a "⊗" is followed by a character other than those listed
above, an error will result and the command will not be completed.
Note: These representations are NOT usable in the ⊗XDEFINE command when
defining a macro from the terminal. Definitions typed in from the
terminal are entered verbatim--no character conversion.
UNDEFINING MACROS
A macro can be undefined by giving the ⊗XDEFINE command with a negative
argument. Thus the command
⊗-⊗XDEFINE <macro name><cr>
makes E completely forget about the named macro.
ERRORS DURING MACRO EXPANSION
The user can select the action to be taken when an error ("SORRY --
...") occurs inside a macro. The default action is to stop all macro
expansion, but the user can give any of three extended commands to
select the current error action from three possibilities.
⊗XSTOPALL On error, stop all macro expansion. This is the default.
⊗XSTOPONE On error, stop the current macro and return control to any
higher level calling macro as if the current macro had
finished.
⊗XSTOPZERO On error, ignore the error and let macro expansion continue.
There is one additional extended command to find out what the currently
selected error action is.
⊗XSTOPHOW Report which of the above three actions is currently selected.
Also, any argument given with any of the three previous commands will
suppress selecting an action, but will report the current error action.
When E needs an answer to a Yes or No question while processing some
command, it will get the answer FROM THE USER'S TERMINAL, NEVER FROM A
MACRO DEFINITION. Unless the answer is Yes, macro expansion is treated
as if a command error had occurred, and the current error action is
taken.
ABORTING AND RESUMING MACRO EXPANSION
Four ESCAPE commands are available for interrupting macro expansion.
These are ESC I, ESC 1 I, BRK I, and BRK 1 I. Two of these, ESC 1 I and
BRK 1 I, affect only macro expansion. ESC I and BRK I interrupt macro
expansion as well as other E processes, such as multipage searches.
Thus ESC 1 I or BRK 1 I can used when you want to stop a macro but don't
want to interrupt a search in progress.
Typing BRK I or BRK 1 I will terminate the current macro and return
control to any higher level calling macro.
Typing ESC I or ESC 1 I will terminate all macro expansion. When this
mechanism is used to stop macro expansion, the user can have the
expansion resumed where it left off by giving the command ⊗XRESUME.
The ⊗XABORT command can be used to explicitly abort any number of levels
of macro expansion by popping a number of calls off the macro stack.
This command can be included in a macro definition to automatically end
one or more macro calls, or it can be given from the terminal to cause
the next ⊗XRESUME command to resume macro expansion one or more levels
up from the current macro stack location. When given WITHOUT an
argument, ⊗XABORT stops all macro expansion--this form is meaningless
except inside a macro. The ⊗#⊗XABORT command WITH an argument pops the
specified number (#) of macro calls off the macro stack (whether the
macro stack is actively being used or just being maintained for a later
⊗XRESUME).
Whenever all macros have been aborted before completion, the command
⊗XRESUME<cr>
will resume macro expansion where it left off. Also, the command
⊗#⊗XRESUME<cr>
can be given with a decimal argument (#) to find out what macros are in
progress and what text and repeat arguments remain to be processed. An
argument of ⊗# finds the element which is # calls from the top of the
macro stack and types out the remaining repeat count, the macro call
level, the name, and the remaining text of that macro call. Thus ⊗0 types
the top of the stack, ⊗1 types the next element on the stack, etc.
PASSING REPEAT ARGUMENTS TO COMMANDS INSIDE MACROS: THE ⊗# COMMAND
The number-sign command, ⊗#, allows one or more commands inside a macro
to access and use the repeat argument given to a macro call. (In this
paragraph and the table below, "#" represents the number-sign character
itself, NOT an arbitrary number.) Inside a macro, each occurrence of
the ⊗# command passes the macro call's argument to the next command and
inhibits the repeated expansion of the macro (clearing the effective
repeat count of the macro call). The actual argument passed to the
command following the ⊗# depends on the arguments given to (1) the macro
call and (2) the ⊗# command itself. In the simplest case, if one of
these two arguments is omitted, the other is used. If the argument to
⊗# is relative (preceded with ⊗+ or ⊗-), then the two (signed) arguments
are added together. The following table shows the resulting argument as
a function of the two "input" arguments, with examples given in
parentheses. Note that the macro call argument (if any) is always
positive; however, the ⊗# command can be followed by ⊗- to invert the
sign of the resulting argument. Outside of macro expansion, the ⊗#
command is treated as if you had NOT typed it!
Arg to Arg to Resulting arg passed
macro call ⊗# command to command following ⊗#
------------ ------------- -------------------------
none anything Arg to ⊗# command
(none) (⊗-⊗2) (⊗-⊗2)
relative none Arg to macro call
or absolute or absolute
(⊗+⊗5) (none) (⊗+⊗5)
(⊗5) (⊗2) (⊗5)
relative relative Relative sum of the two arguments
(⊗+⊗5) (⊗-⊗2) (⊗+⊗3)
absolute relative Absolute sum of the two arguments,
except negative sum is relative
(⊗5) (⊗+⊗2) (⊗7)
(⊗5) (⊗-⊗7) (⊗-⊗5)
REQUESTING/SUPPRESSING INFORMATIONAL MESSAGES: ⊗XVERBOSE AND ⊗XTERSE
Certain informational messages will be either typed out or suppressed
depending on the reporting state that E is in: Terse, Normal, or
Verbose. The reporting state can be set with the ⊗XVERBOSE and ⊗XTERSE
commands, which are described elsewhere. The Verbose state is useful
during debugging of macros that call other macros.
The following messages are typed out only in Verbose mode.
Calling ... ;A macro is being called.
Ending ... ;A macro call has just finished.
The following messages are suppressed only in Terse mode.
Aborting macro ... ;An error has caused aborting of one
; macro call while in ⊗XSTOPONE mode.
Abort of # macros requested from ...
;A ⊗#⊗XABORT command has been given.
FORMAT OF NAME TYPEOUT FOR MACRO CALL
When a macro call is mentioned in an error or informational message, the
form typed out is usually
[nX](m)macname
where n is the remaining repeat count for this macro call, m is the
level of this macro call, and macname is the name of the macro. The
form [nX] will be omitted if n is 1. A level (m) of 1 represents the
bottom of the macro stack, that is, the level called from the terminal.
Note that macname might be blank, since the blank macro name is
perfectly legal.
LINE EDITING IN MACROS
Line editor commands may be used inside macros, and they will have their
normal effects except that the αD command, when intended to delete the
CRLF at the end of a line (thus joining two lines), MUST be preceded in
the macro definition either with α<tab> or with αK<cr> so that E will be
sure that the αD will be given at the end of the line. The effect of a
bad use of αD is that characters after the αD in the macro definition
up through the first activation character following are not "typed"
until the macro expansion ends, which can be particularly noticeable if
you use a repeat argument on the macro call.
EXITING NOT ALLOWED DURING MACRO EXPANSION
The command to exit from E (namely, ⊗E) is not legal coming from a macro
expansion. This is disallowed to prevent accidental exiting while using
attach mode inside macros, since the command to put down the attach
buffer is the same as that to exit, ⊗E.
*** ADDITIONAL COMMANDS RELEVANT TO MACROS ARE EXPLAINED ON THE NEXT PAGE. ***
MACROS AND COMMAND FILES: ⊗XEXECUTE ⊗PUTDEFS ⊗XCOMMENT ⊗XATTACH ⊗XREDEFINE
(Additional commands relevant to macros are explained on p. 25.)
EXECUTING COMMANDS FROM A FILE
To allow macro definitions and other often used commands to be carried
out automatically, the ⊗XEXECUTE command causes a set of commands to be
read in from a specified command file and then executed. The form of
this command is
⊗XEXECUTE <filename> ( <page range> ) <cr>
where <filename> and the parentheses and <page range> are optional. This
causes the selected pages in the named file to be read into a macro whose
name is the file's primary name; then this "file macro" is expanded just
like any other macro. If the <filename> is omitted, the last execute
filename given is used; if no previous execute filename has been given,
then the default filename is used: EINIT.CMD. If a <filename> without an
extension is given in the ⊗XEXECUTE command, the default extension .CMD is
used. With a zero argument, this command
⊗0⊗XEXECUTE<cr>
will just type out the current default execute file. The <page range> can
be either a single decimal page number, or a pair of numbers separated by
a colon, (for example, 3:4). Note that multiple page ranges (such as COPY
allows) are not permitted.
The ⊗XEXECUTE command ignores E directories and SOS line numbers and
accepts the standard and alternate representations to allow for input of
the CONTROL and META bits and non-printing characters from command files.
These representations, which use "⊗" as an escape character, are explained
on p. 25.
WRITING MACRO DEFINITIONS INTO COMMAND FILES: THE ⊗XPUTDEFS COMMAND
The extended command
⊗XPUTDEFS <filename><cr>
writes all macro definitions into the file given, or into the default file
if no filename is specified. If the file already exists, it is extended
with a new page added. If the file doesn't exist, it is created with an E
directory. This command has the same default file (initially EINIT.CMD)
and default file extension (.CMD) as the ⊗XEXECUTE command. The
definitions are written out using the standard representation, which is
explained on p. 25.
COMMENTS IN COMMAND FILES
To allow documentation of macro definitions and other commands in command
files, the ⊗XCOMMENT command is provided. This command does nothing; it
ignores the entire command line. Thus the following command does nothing
inside a command file.
αβXCOMMENT This is a bunch of text that can occur on many lines
in a command file. It might, for example, document what nearby
text does. This command should be ended with a carriage
return, which in a command file must occur as the two
characters circle-x and double arrow! ⊗↔
ATTACHING/EDITING/REDEFINING MACROS
The ⊗XATTACH and ⊗XREDEFINE commands can be used to edit and redefine
macros. The ⊗XATTACH command loads the attach buffer with the definition
of a macro in standard representation (see p. 25), thus allowing you to
put the text into the current file and edit it. The ⊗XREDEFINE command
(re)defines a macro from incore text, using the standard and alternate
representations. The forms of these commands are
⊗XATTACH <macro name><cr>
⊗#⊗XREDEFINE <macro name><cr>
where the blank macro name will be used if <macro name> is omitted and the
argument (#) to ⊗XREDEFINE determines how many lines (starting at the
current line or at the first line of the attach buffer) are used as the
source of the macro definition. As usual, a negative argument represents
lines before the current line. If no argument is given to ⊗XREDEFINE, the
whole page or whole attach buffer is used as the macro definition source.
The ⊗XATTACH command cannot be given when there is already some text
attached.
BOOK MODE (/B) and the READ command
Book mode (/B) in E provides some special features for editing files,
especially files which are really books in disguise. The main feature
of book mode is that you cannot alter a file open in this mode. In
addition, the READ command allows you to read a file in book mode over a
long period of time without having to explicitly remember your place in
the file. Your place will be saved in a .BKP file.
You get into book mode by following the filename with /B when you are
starting to edit, or by using the READ command to edit the file.
1. In /B mode, E will never permit you to alter the file you are
editing; you cannot change to READONLY mode or READWRITE mode from /B
mode. In /B mode, if you change part of a page and try to write out
the new version, E will simply remind you that you cannot alter the
file.
2. To help you keep your place in a book-file you are reading, E
keeps a special psuedo-SNAIL file on your area. This file will have
the name <filnam>.BKP, where <filnam> is the primary name of the
book-file. Note that the .BKP file is NOT a SNAIL file (although it
is in SNAIL file format), and thus will never be deleted by LOGOUT.
This .BKP file will contain the page number and line number at which
you were editing the book-file the last time you exited from E. E
will neither look for nor write a .BKP file unless you have started E
with the monitor command READ, which automatically starts E in /B
mode looking for a .BKP file. Furthermore, when you start E with the
READ command, if you specify any of the /L, /P or /R switches, E will
not read or write any .BKP file. And if you start E with just the
READ command without any argument, then unless there already is
a .BKP file on your area, no new .BKP file will be written.
3. The READ command with an argument (and without any of the /L, /P
and /R switches) will look for a .BKP file with the given name and
PPN. If that .BKP file is not found, E will look for the .BKP file
on your current ALIAS area and then on your logged-in area. If a .BKP
file is found, it is used and updated when you exit. Otherwise, a
new .BKP file will be written onto your (ALIAS) area when you exit.
4. Whenever you use E in /B mode, it will reference TMPCOR files with
the name BK instead of ED. Thus you can switch back and forth
between editing some program and reading a book by alternately giving
the no-argument monitor commands ETV and READ (provided you have once
given the filenames). In /B mode, E will display "/B" following the
filename at the top of the screen.
5. When you have finished reading a book-file, E will delete the
<filnam>.BKP file automatically. E will think you have finished
reading the book if and only if you are on the last page of the file
when you exit.
- - - - -
The complete book WUTHERING HEIGHTS by Emily Bronte is available for
general reading in the file WUTHER[LIB,DOC]. To begin reading it,
simply give the monitor command:
.READ WUTHER[LIB,DOC]
Then when you exit from E, the file WUTHER.BKP will have been written
onto your (ALIAS) disk area with the numbers of the page and line
where you were last reading. To continue reading the file later
during the same login session (and with the same ALIAS as before),
simply say:
.READ
which will read in the TMPCOR file BK for your current ALIAS. When
you exit again, the TMPCOR file and the .BKP file will be updated.
To continue reading after you have logged out and back in, say:
.READ WUTHER
which will cause E to find your .BKP file, which itself will contain
the name of the book-file WUTHER[LIB,DOC].
Some other book-files will be found on the [LIB,DOC] disk area, including
GRIMM which is Grimm's Fairy Tales.
- - - - -
To read a file in /B mode without having the <filnam>.BKP file read
or written, type any one of the monitor commands:
.ETV <filename>/B
.READ <filename>/R
.READ <filename>/nP
where <filename> is the name of the file, including any extension
and/or PPN, and n is the number of the page you want to start on.
The /R in the second command and the /nP in the third inhibit use of
any .BKP file; the READ command starts E in /B mode.
E files extended by other programs.
E can handle easily almost any file that has been extended by another
program even though the directory has not been updated by that program.
The single restriction is that the file must remain in correct E format
with Formfeeds occurring only as the first character in a record. When
E encounters a file that is longer than the directory indicates, the
file is read from the last indicated page to the end of the file to make
sure that the file is properly formatted. If the file is formatted ok,
then E generates in core an updated version of the directory, including
directory lines for any new pages added to the file. The updated
directory is normally not written out onto the disk until some command
forces one or more other pages to be written on the disk. However, the
⊗XUPDATE command immediately writes out the updated directory, if any.
As long as the updated directory remains not written out on the disk, a
"U" (for update) is displayed on the top line of the screen. The first
time any page is changed and written out, or when the ⊗XUPDATE command
is given, the updated directory will be written out and the "U" will
disappear.
When E opens a file that has been properly extended in the above manner,
it reports the number of pages that have been added to the file, or, if
none, the number of records by which the last page has been extended.
Also, if any pages have been added, the default position within the file
(at which E will place you if you gave no specific page number in a /#P
switch) is the first newly added page.
MAIL and RCV extend E files in this way.
NEW EXTENDED COMMANDS PROVIDED MAINLY FOR TELETYPE USERS
The following extended commands do exactly the same thing as the
corresponding single-character commands for which they were named. Note
that some of the single-character commands are impossible to use on
Teletypes because they are intercepted by the system as special control
functions (e.g., ↑U clears input line being typed). See the writeup for
the single-character commands for details of the functions.
Extended Equivalent Single-Character Command
Command
⊗XEXIST ∃ (there-exists sign, octal 025, ↑U (intercepted by system))
⊗XLAMBDA λ (lambda, octal 010, ↑H) Switches files.
⊗XLOOKUP λ (lambda, octal 010, ↑H) Switches files.
⊗XEPSILON ε (epsilon, octal 006, ↑F) Switches files.
⊗XENTER ε (epsilon, octal 006, ↑F) Switches files.
⊗XPARTIAL ∂ (partial-sign, octal 017, ↑O (intercepted by system))
⊗XMSG ∂ (partial-sign, octal 017, ↑O (intercepted by system))
Filenames and filehacks
FILENAMES
If the filename you select to edit does not include an extension, then E
will first look for the file with the null extension. If that file does
not exist, E will edit the file (with the given primary name and PPN)
that has the "best" extension. The "best" extension is found by
checking extensions against E's ordered list of good extensions (i.e.,
.FAI, .SAI, .PUB, etc). If no good extension is found, E will edit the
first file it finds in the UFD that has the right primary name and any
extension except those in E's bad extension list (e.g., .DMP, .XGP,
etc). To edit a file with a "bad" extension, you must type the
extension explicitly.
If you omit the programmer name from the PPN in a filename, E will use
your current alias programmer name. If you omit the project name, E
will use your current alias project name.
FILEHACKS
The following filehacks, also usable with the COPY program, are
available in E as filenames. The file represented by each is indicated
below; all these files are on the [2,2] disk area. A filehack consists
of a backslash followed by a name from the list below; the name may be
abbreviated by as many letter as necessary to identify it uniquely
(current abbreviations are given below). A filehack takes the place of
the filename and can be followed by the usual switches. Note that some
of the files below are not usually maintained in E format; beware.
FILEHACK ABBR FILE
\MAIL \M The current user's mail file.
\MSG \M The current user's mail file.
\PLAN \P The current user's plan file.
\NAP \NA The current user's NS notifications file.
\NS \NS The current user's NS notifications file.
\GRIPES \G The system gripe file: GRIPES.TXT[2,2].
\NOTICE \NO The system message file: NOTICE.TXT[2,2].
\DIGEST \DI The current AP news digest.
\DOWN \DO The system downtime forecast file.
\DAY \DA The message-of-the-current-day file.
The special filename consisting of just a question mark ("?")
represents the name of the E manual (this file). Thus the monitor
command
ETV ?<cr>
will cause E to edit this manual file in readonly mode.
Generating a new directory line: ⊗XNDFAIL ⊗XNDSAIL
Two new commands ⊗XNDFAIL and ⊗XNDSAIL generate and insert a new first
line of the page (called the directory line) in appropriate FAIL and
SAIL formats for labels and for specified categories.
These commands apply to the current page. If more than one page is in
core (through the use of ⊗XAPPEND or β<ff> commands) then the
information will be gathered only from the page containing the arrow
line and the new line will appear at the start of this page. Other
pages in core at the time will be unaffected.
The ⊗XNDSAIL command may be used as an information source in a variety
of different ways. It is not intended for use with text material.
⊗XNDFail, given with a <cr> termination, lists all labels.
Given with a α<cr> it lists only those labels that have one or more ↑'s
Given with αβ<cr> it lists only those labels with ↑↑ (or more).
This command does not take arguments (unlike ⊗XNDSAIL). If the command is
typed with a prefix argument of 0, it states the conditions outlined
above and is otherwise a NO-OP.
⊗XNDSail, given with a <cr> termination, lists all words that are preceded by
certain category words, the default words being RECORD!CLASS,
RECORD_CLASS and PROCEDURE.
Having found a category word the program lists the first word following
the category word and then ignores any following text until either a comma
or a semicolon is encountered. When a semicolon is encountered the search
for a new category word is resumed. If, on the other hand, a comma is
encountered (not however within parens) then the next word is taken as
another example of the category and it is listed, preceded by a comma.
Listings following different category words are separated by spaces.
The default categories may be augmented or replaced by any desired
categories up to the limit of 4 categories, as outlined below.
One additional category may be specified by typing its name after a
space following the command name and terminating it by a <cr>.
Up to 4 new categories may be specified with the categories after
the first one replacing the default categories, one by one.
To retain some default categories the list is terminated by a <cr>
If the typed list of categories is terminated by ⊗<cr> then only the
typed categories are used, and the default ones are eliminated.
If the command is terminated by ⊗<cr> without any typed category names
then the original default categories are reinstated.
If given with a prefix argument of 0 this command will accept any typed
categories and then will list the categories that are in effect without
generating a text line.
Major changes have been made to the JUST and JFILL commands.
(See p. 16:18 for full details.)
1) Lines of any length can now be handled by these commands.
2) Left margins are now specified in terms of indent values, that is, one
types 0 (not 1 as formerly) if the line is have no indent. The right
margin is still specified by the column position.
3) The number of blank lines (B) to be used between paragraphs may now be
specified by typing a fourth suffixing number (it may be 0). The
initial default situation is for the same number of blank lines to be
used after justification as there were in the original text. This
condition may be reset by typing -1 as the fourth number.
4) All margin values are now sticky. The initial default values are now
0,0,74,-1.
5) Switches are now used to change the way that E detects paragraphs.
The initially set switch, N, (for Normal) calls for any indent ≥2 (or
a TAB) to signal a new paragraph. An Arbitrarily input crown indent A
may, however, be assigned and used by means of the switches as noted
below. Switches are sticky and are typed as a single letter following
the command name, separated from it and from any following parameters
by spaces. For fuller details see p. 16.
Switch Mneumonic Conditions in old text identifying a new paragraph
(Besides preceding blank line)
N Normal Normal crown indent ≥2
G Get Get Assigned crown indent A by examining text.
R Rejustify Rejustify (old C as new A input crown indent)
A Assigned Use Assigned crown indent A (as previously determined).
Other changes to these commands
1) Punctuation marks . ! and ? followed by a space, even with any number
of closure symbols (such as ", ), ], etc.) interposed, are treated as
sentence endings and will be followed by 2 spaces (or a CRLF) when the
text is justified provided the final closure symbol was originally
followed by 2 spaces or a CRLF.
2) The fast indent commands ← and → now use the absolute indent value
associated with the last use of the ⊗XINDENT command. The initial
default value is 4.
3) Indents can no longer be specified relatively. This feature was seldom
used and it could be interpreted ambiguously.
4) All left margin indents now use TABs whenever possible.
5) THE INDENT and ALIGN now take switches that specify the way in which
interior TABs are to be handled. With the S switch operative, and
this is the default condition, all interior TABs are replaced by
spaces before anything else is done. With the T switch operative TABs
are left as TABs.
6) A negative prefix argument may be used to justify the specified number
of lines before (but not including) the arrow line.
Seven new commands have been added.
These commands facilitate the justification operations, both for
normal text and for tabular material. All of the this explanation was
justified by means of these new commands. See p. 16 to 18 for details.
These new commands are noted below.
⊗XJGET This command examines test to determine the C,L,R values that were
used in it justification so that other unjustified text can be put
into the same form.
⊗XSJFILL This command separates the text into separate sentences so that
the sentences can be reordered as desired.
⊗XSJUST Similar to *SJFILL but the sentences are padded so as to obtain
right-margin justified as well.
⊗XTABLE This command allows one to chance the columnar positions of
tabular text that is already in proper columnar arrangement with due
allowance being made for empty entries.
⊗TJFILL This command handles tabular material that is not in columns and
puts it into any desired columnar arrangement. There may be
associated textual material which will be left justified.
⊗TJUST Similar to ⊗TJFILL but the associated textual material is right
justified as well.
⊗XTJGET This command does for tabular material what ⊗XJGET does for
ordinary text.